【问题标题】:Toggle to hide all columns but unhide based on cell value切换以隐藏所有列,但根据单元格值取消隐藏
【发布时间】:2022-08-07 10:20:51
【问题描述】:

我希望根据名为 (\"Quotes\") 的单元格中的值(介于 1 和 10 之间),使用切换按钮隐藏和取消隐藏列。

我设法在第一次单击时隐藏了所有列,但在第二次单击时它们都回来了,而没有检查 (\"Quotes\") 单元格中的值。

我将如何检查 (\"Quotes\") 单元格中的值,然后仅取消隐藏所需的列。

下面的 VBA 代码隐藏了我想隐藏的列, 但是当切换时将它们全部带回来。

Private Sub ShowHideTemplate_Click()
If ShowHideTemplate.Value Then
    Worksheets(\"Sheet1\").Range(\"L:M,Q:R,V:W,AA:AB,AF:AG,AK:AL,AP:AQ,AU:A,AZ:BA,BE:BG,BJ:BL\").EntireColumn.Hidden = False
    ShowHideTemplate.Caption = \"Full\"

Else
    Worksheets(\"Sheet1\").Range(\"L:M,Q:R,V:W,AA:AB,AF:AG,AK:AL,AP:AQ,AU:AV,AZ:BA,BE:BG,BJ:BL\").EntireColumn.Hidden = True
    ShowHideTemplate.Caption = \"Hidden\"

End If

End Sub

我希望取消隐藏功能检查一个名为 (\"Quotes\") 的单元格中是否存在 1 到 10 之间的数字,然后根据该数字取消隐藏列。

IE。

if (\"Quotes\") = \"1\" then only unhide (\"L:M\")
if (\"Quotes\") = \"2\" then unhide (\"L:M,Q:R,BJ:BL\")
if (\"Quotes\") = \"3\" then unhide (\"L:M,Q:R,V:M,BJ:BL\")
if (\"Quotes\") = \"4\" then unhide (\"L:M,Q:R,V:M,AA:AB,BJ:BL\")
if (\"Quotes\") = \"5\" then unhide (\"L:M,Q:R,V:M,AA:AB,AF:AG,BJ:BL\")
if (\"Quotes\") = \"6\" then unhide (\"L:M,Q:R,V:M,AA:AB,AF:AG,AK:AL,BJ:BL\")
if (\"Quotes\") = \"7\" then unhide (\"L:M,Q:R,V:M,AA:AB,AF:AG,AK:AL,AP:AQ,BJ:BL\")
if (\"Quotes\") = \"8\" then unhide (\"L:M,Q:R,V:M,AA:AB,AF:AG,AK:AL,AP:AQ,AU:AV,BJ:BL\")
if (\"Quotes\") = \"9\" then unhide (\"L:M,Q:R,V:M,AA:AB,AF:AG,AK:AL,AP:AQ,AU:AV,AZ:BA,BJ:BL\")
if (\"Quotes\") = \"10\" then unhide (ALL) (\"L:M,Q:R,V:M,AA:AB,AF:AG,AK:AL,AP:AQ,AU:AV,AZ:BA,BJ:BL\")

    标签: excel vba togglebutton


    【解决方案1】:

    您可以使用Select Case Range("Quotes").Value 语句,其中“引号”是一个命名范围。例如。:

    Private Sub ShowHideTemplate_Click()
    If ShowHideTemplate.Value Then
        
        Select Case Range("Quotes").Value
            Case Is = 1
                Worksheets("Sheet1").Range("L:M").EntireColumn.Hidden = False
            Case Is = 2
                Worksheets("Sheet1").Range("L:M,Q:R,BJ:BL").EntireColumn.Hidden = False
            Case Is = 3
                Worksheets("Sheet1").Range("L:M,Q:R,V:M,BJ:BL").EntireColumn.Hidden = False
            ' and so on ...
        End Select
        
        'Worksheets("Sheet1").Range("L:M,Q:R,V:W,AA:AB,AF:AG,AK:AL,AP:AQ,AU:A,AZ:BA,BE:BG,BJ:BL").EntireColumn.Hidden = False
        'Modify as you wish:
        ShowHideTemplate.Caption = "Full"
    
    Else
        Worksheets("Sheet1").Range("L:M,Q:R,V:W,AA:AB,AF:AG,AK:AL,AP:AQ,AU:AV,AZ:BA,BE:BG,BJ:BL").EntireColumn.Hidden = True
        ShowHideTemplate.Caption = "Hidden"
    
    End If
    End Sub
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-08
      • 2018-04-13
      • 1970-01-01
      • 2023-04-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多