首页 > 解决方案 > 使用 VBA 根据更改的单元格值隐藏各种行

问题描述

我目前有以下编码:

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 行。 ..ETC.....

你能建议怎么做吗?

标签: vbahiderows

解决方案


您需要将该条件更改为仅在与单元格地址匹配时才执行代码,而不是在地址匹配时执行代码。这将允许您添加与单元格地址匹配的更多条件。

我建议将硬编码的单元格地址(如“$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


推荐阅读