我可以使用下拉菜单在单元格(C41:C59)中做出很多选择,下拉列表的值也可以在单元格(E41:E59)中看到。对于每个选择,我希望显示或隐藏不同的行。如果下拉列表为N / A,则隐藏,否则显示行。我无法解决的问题是,每个选择都有不同的行,并且行数也不同。因此,我尝试为每个选择创建一个代码,并且仅当E列中的单元格更改时才更改此代码。这是我到目前为止所拥有的,但是什么也没做。
If Not Application.Intersect(Target, Range("E41")) Is Nothing Then
If Range("E41") = "N/A" Then
[67:73].EntireRow.Hidden = True
Else
[67:73].EntireRow.Hidden = False
End If
End If
下面的代码是一个事件过程。当在其代码表中找到该过程的工作表上更改单元格时,它将运行。 (代码在该特定模块中的位置至关重要。)如果更改了一个单元格-忽略了多个同时发生的更改(例如可能由复制/粘贴操作引起的更改)-代码将检查修改后的单元格是否在C41范围内: C59或E41:E59。如果是这样,它将在修改后隐藏或显示同一工作表中的行,具体取决于修改后该单元格的值为“ N / A”。
Private Sub Worksheet_Change(ByVal Target As Range)
' 010
Dim TriggerRange As Range
Dim Rng As Range
' ignore simultaneous changes of many cells
If Target.Cells.CountLarge > 1 Then Exit Sub
Set TriggerRange = Application.Union(Range("C41:C59"), Range("E41:E59"))
If Not Application.Intersect(TriggerRange, Target) Is Nothing Then
Select Case Target.Row
Case 41, 46, 59
Set Rng = Range("67:73")
Case 50 To 59
Set Rng = Range(Rows(67), Rows(73))
Case Else
Set Rng = Range(Rows(67), Rows(73))
End Select
Rng.Rows.Hidden = (Target.Value = "N/A")
End If
End Sub
在此代码中,总是隐藏或显示相同的行。该代码用于演示如何根据更改的单元格所在的行来指定不同的行范围,并根据您的喜好使用不同的语法。