我使用以下代码隐藏Excel VBA中所需的单元格。
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Cell As Range
Set Cell = Range("$F$26")
If Not Application.Intersect(Cell, Range(Target.Address)) Is Nothing Then
If Range("F26").Value < 2 Then
Rows("39:61").EntireRow.Hidden = True
ElseIf Range("F26").Value < 3 Then
Rows("47:61").EntireRow.Hidden = True
ElseIf Range("F26").Value < 4 Then
Rows("55:61").EntireRow.Hidden = True
Else: Rows("39:61").EntireRow.Hidden = False
End If
End If
End Sub
当我按降序排列值时(例如4,3,2,1),它可以正常工作。但是在放1之后,如果我打算切换到2或3(但不是4)。然后它没有显示第二和第三组面板中的细胞。但如果我放4,那么它再次显示所有小组。我附上了截图。
答案 0 :(得分:1)
您必须从头开始使用Range(“$ F $ 26”)中的新值重新评估后续调用;例如让一切都可见,然后决定隐藏什么。
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Application.Intersect(Range("F26"), Range(Target.Address)) Is Nothing Then
Application.ScreenUpdating = False
Rows("39:61").EntireRow.Hidden = False
Select Case Range("F26").Value
Case Is < 2
Rows("39:61").EntireRow.Hidden = True
Case 2
Rows("47:61").EntireRow.Hidden = True
Case 3
Rows("55:61").EntireRow.Hidden = True
End Select
Application.ScreenUpdating = True
End If
End Sub
我已将条件评估更改为Select Case statement,并将Cell
变量删除为不必要的。
当Range(“F26”)空白时,我找不到任何意外情况。目前,这属于< 2
条件。