使用 VBA 隐藏单元格
Hiding cells by using VBA
我正在使用以下代码隐藏 Excel VBA 中所需的单元格。
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Cell As Range
Set Cell = Range("$F")
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,它会再次显示所有面板组。我在下面附上了屏幕截图。
您必须从头开始使用 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
条件。
我正在使用以下代码隐藏 Excel VBA 中所需的单元格。
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Cell As Range
Set Cell = Range("$F")
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,它会再次显示所有面板组。我在下面附上了屏幕截图。
您必须从头开始使用 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
条件。