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

我正在尝试创build基于一个单元格的数值取消隐藏的Worksheet_Change()事件。

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

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

我正在使用Excel 2010。

提前致谢!

丹尼尔

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