使用VBA根据更改的单元格值隐藏各种行

时间:2018-10-30 11:12:02

标签: vba hide rows

我目前有以下编码:

Private Sub Worksheet_Change(ByVal Target As Range)
  Dim arCases As Variant
  Dim res As Variant

  arCases = Array("Term", "Indeterminate", "Transfer", "Student", "Term extension", "As required", "Assignment", "Indéterminé", "Mutation", "Selon le besoin", "Terme", "prolongation du terme", "affectation", "Étudiant(e)")

    If Target.Address <> "$C$37" Then Exit Sub


    res = Application.Match(Target, arCases, 0)

    If IsError(res) Then
       Rows("104:112").Hidden = False
    Else
       Rows("104:112").Hidden = True

  End If

End Sub

我遇到的问题是,我需要添加此内容,例如,如果单元格C37中的值是“ X”,则隐藏行42:49;如果单元格H4中的值是“ Y”,则行101:114隐藏了...等等....

您能建议如何做吗?

1 个答案:

答案 0 :(得分:0)

您需要更改该条件以仅在匹配单元格地址的情况下执行代码,而不是除非地址匹配才执行代码。这将允许您添加与单元格地址匹配的其他条件。

我建议将硬编码的单元格地址(例如“ $ C $ 37”)更改为命名范围,理想情况下,该命名范围在整个工作簿中应该是唯一的。

arCases = Array("Term", "Indeterminate", "Transfer", "Student", "Term extension", "As required", "Assignment", "Indéterminé", "Mutation", "Selon le besoin", "Terme", "prolongation du terme", "affectation", "Étudiant(e)")

If Target.Address = "$C$37" Then
    res = Application.Match(Target, arCases, 0)
    If IsError(res) Then
       Rows("104:112").Hidden = False
    Else
       Rows("104:112").Hidden = True
    End If
ElseIf Target.Address = "$H$4" Then
    ' Do something else
End If

End Sub