我正在尝试根据列表值隐藏/取消隐藏某些行,如果它们被隐藏,则将单元格设置为 0。如果我选择 1,代码将隐藏这些行,但如果我选择任何其他值,它不会取消隐藏它们。我可用的值是 1 到 5。
Private Sub Worksheet_Change(ByVal Target As Range)
'Updated by Extendoffice 20180822
If Target.Address = "$F$16" Then
If Target.Value <= 2 Then
Application.Rows("22:25").Select
Application.Selection.EntireRow.Hidden = True
Range("F22").Value = "0"
Range("F23").Value = "0"
Range("F24").Value = "0"
Range("F25").Value = "0"
ElseIf Target.Value <= 3 Then
Application.Rows("23:25").Select
Application.Selection.EntireRow.Hidden = True
Range("F23").Value = "0"
Range("F24").Value = "0"
Range("F25").Value = "0"
ElseIf Target.Value <= 4 Then
Application.Rows("24:25").Select
Application.Selection.EntireRow.Hidden = True
Range("F24").Value = "0"
Range("F25").Value = "0"
ElseIf Target.Value <= 5 Then
Application.Rows("25:25").Select
Application.Selection.EntireRow.Hidden = True
Range("F25").Value = "0"
ElseIf Target.Value <= 6 Then
Application.Rows("22:25").Select
Application.Selection.EntireRow.Hidden = False
End If
End If
End Sub
通过选择 1,您将命中第一个 IF 语句并隐藏 22:25。通过尝试更改值,不会做任何事情,因为“ElseIf Target.Value <= 6 Then”永远不会被执行,因为每个值都是 <= 6。您需要在触发事件时“重置”您的值 - > 在 If Thens 之前将其添加到 Sub 的顶部...
If Target.Address = "$F$16" Then Application.Rows("22:25").Select Application.Selection.EntireRow.Hidden = False Range("F22").Value = "[whatever default value should be]" Range("F23").Value = "[whatever default value should be]" Range("F24").Value = "[whatever default value should be]" Range("F25").Value = "[whatever default value should be]"
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句