Vba 根据列表值隐藏/取消隐藏某些行
我试图根据列表值隐藏/取消隐藏某些行,如果这些行被隐藏,请将单元格设置为0。如果我选择1,代码将隐藏行,但如果我选择任何其他值,代码将不会取消隐藏行。我可用的值是1到5Vba 根据列表值隐藏/取消隐藏某些行,vba,excel,hide,Vba,Excel,Hide,我试图根据列表值隐藏/取消隐藏某些行,如果这些行被隐藏,请将单元格设置为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
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
Private子工作表\u更改(ByVal目标作为范围)
'由Extendoffice 20180822更新
如果Target.Address=“$F$16”,则
如果Target.Value您的代码只说在某个条件下隐藏行,它不会说在其他条件下显示行,除非单元格=6,但逻辑永远不会走那么远,因为1-5中的任何值都会满足前5个条件,然后退出If
语句
如果要前后翻转隐藏的布尔值(真/假值),可以将布尔变量变暗为非自身,然后将隐藏属性设置为该值:
Dim TorF as Boolean
TorF = Application.Selection.EntireRow.Hidden 'to set the boolean's value
Application.Selection.EntireRow.Hidden = Not TorF 'to flip it
通过选择1,您将点击第一条IF语句并隐藏22:25。通过尝试更改值,将不会执行任何操作,因为“ElseIf Target.value”可能会缩短为行(“22:25”)。Hidden=false
。
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]"