我正在尝试创建Worksheet_Change()
事件,以根据一个单元格的数值取消隐藏行。
我有一张桌子 B13:B513 。我想取消隐藏等于 C7 中的值的行数。例如,如果C7 = 10,那么B13:B22将取消隐藏,其余的仍将被隐藏。
我已经看到了几种做类似事情的方法,但每个选项使用“case”。在我的情况下,我有500个选项。我相信有一种更有效的方法。
我正在使用Excel 2010。
提前致谢!
丹尼尔
答案 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