使用 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 条件。