根据单元格中的数值取消隐藏行

时间:2016-09-07 10:09:26

标签: excel excel-vba vba

我正在尝试创建Worksheet_Change()事件,以根据一个单元格的数值取消隐藏行。

我有一张桌子 B13:B513 。我想取消隐藏等于 C7 中的值的行数。例如,如果C7 = 10,那么B13:B22将取消隐藏,其余的仍将被隐藏。

我已经看到了几种做类似事情的方法,但每个选项使用“case”。在我的情况下,我有500个选项。我相信有一种更有效的方法。

我正在使用Excel 2010。

提前致谢!

丹尼尔

1 个答案:

答案 0 :(得分:0)

Worksheet_Change()事件下面的代码只有在用户更改单元格“ C7 ”中的值时才会运行,您可以在代码中轻松修改它(可以在其中进行修改)线)。

代码将取消隐藏从第13行开始指定的行数(根据范围 B13:B513

Private Sub Worksheet_Change(ByVal Target As Range)

Dim WatchRange                  As Range
Dim IntersectRange              As Range
Dim Numof_UnhideRows            As Long
Dim UnhideRowStart              As Long


' if you want to unhide the rows in Range(B13:B513) only when someone canges the vlues in C7
Set WatchRange = Range("C7")

' starting unhiding number of rows starting for row 13
UnhideRowStart = 13

Set IntersectRange = Intersect(Target, WatchRange)

If Not IntersectRange Is Nothing Then
    If IsNumeric(Target.Value) Then
        Numof_UnhideRows = Target.Value
        Rows(UnhideRowStart & ":" & UnhideRowStart + Numof_UnhideRows - 1).EntireRow.Hidden = False

        MsgBox "Unhide a total of " & Numof_UnhideRows & " rows"
    Else
        MsgBox "Cell C7 doesn't contain a Numeric Value", vbCritical
    End If
Else
   'Do Nothing Spectacular

End If

End Sub