Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 根据列表值隐藏/取消隐藏某些行_Vba_Excel_Hide - Fatal编程技术网

Vba 根据列表值隐藏/取消隐藏某些行

Vba 根据列表值隐藏/取消隐藏某些行,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

我试图根据列表值隐藏/取消隐藏某些行,如果这些行被隐藏,请将单元格设置为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
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]"