通过使用VBA隐藏单元格

我正在使用以下代码来隐藏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,那么它再次显示所有面板组。 我附上了下面的截图。

在这里输入图像说明

在这里输入图像说明

在这里输入图像说明

你必须重新评估后续的调用范围(“$ 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语句 ,并将Cellvariables移除为不必要的。

当Range(“F26”)为空时,我找不到任何意外情况。 目前,这属于< 2条件。