Excel 根据单元格中的数值取消隐藏行
我正在尝试创建Excel 根据单元格中的数值取消隐藏行,excel,vba,Excel,Vba,我正在尝试创建工作表\u Change()事件以根据一个单元格的数值取消隐藏行 我有一张桌子,B13:B513。我想取消隐藏的行数等于C7中的值。例如,如果C7=10,则B13:B22将取消隐藏,其余部分仍将隐藏 我见过几种做类似事情的方法,但每个选项都使用“case”。就我而言,我有500个选择。我相信有一种更有效的方法可以做到这一点 我正在使用Excel 2010 提前谢谢 Daniel只有当用户更改单元格“C7”中的值时,工作表_Change()事件中的以下代码才会运行,您可以在代码中轻松
工作表\u Change()
事件以根据一个单元格的数值取消隐藏行
我有一张桌子,B13:B513。我想取消隐藏的行数等于C7中的值。例如,如果C7=10,则B13:B22将取消隐藏,其余部分仍将隐藏
我见过几种做类似事情的方法,但每个选项都使用“case”。就我而言,我有500个选择。我相信有一种更有效的方法可以做到这一点
我正在使用Excel 2010
提前谢谢
Daniel只有当用户更改单元格“C7”中的值时,
工作表_Change()
事件中的以下代码才会运行,您可以在代码中轻松修改它(从哪一行开始)
代码将取消隐藏从第13行开始指定的行数(根据范围B13:B513)
只有当用户更改单元格“C7”中的值时,才会运行
工作表\u Change()
事件中的以下代码,您可以在代码中轻松修改它(从哪一行开始)
代码将取消隐藏从第13行开始指定的行数(根据范围B13:B513)
C7是否始终是要隐藏行数的单元格?隐藏行的范围是否从第13行(“B13”)开始?您需要检查C7中的值
isnumeric
,然后resize
将B13范围调整为C7中的值,并将entirerow
shidden
属性更改为False。@ongcaps您在下面的mu asnwer中测试过代码了吗?C7是否总是要隐藏行数的单元格?隐藏行的范围是否从第13行(“B13”)开始?您需要检查C7中的值isnumeric
,然后resize
range B13到C7中的值,并将entirerow
shidden
属性更改为False。@ongcaps是否在下面的mu asnwer中测试了代码?我将使用range(“B13”)。resize(Target.Value).EntireRow.Hidden=False
。但是个人偏好。@DarrenBartrup Cook如果我的答案在改善答案,请随意更新。我不会说它在改善-只是获得相同结果的另一种方式。我会使用范围(“B13”).Resize(Target.Value).EntireRow.Hidden=False
。但是个人偏好。@DarrenBartrup Cook如果我的答案有改进,请随时更新。我不会说它有改进,这只是获得相同结果的另一种方式。
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