Excel - VBA 切换按钮

Excel - VBA Toggle Button

我制作了一个电子表格,想要隐藏和取消隐藏切换按钮上的列,但基于名为(“引号”)的单元格中的值(1 到 10 之间)。作为 VBA 的新手,我设法隐藏了第一个切换按钮上的所有列,但在第二个切换按钮上,它们全部返回而不检查(“引号”)单元格中的值。我如何才能检查(“引号”)单元格中的值,然后仅取消隐藏所需的列。

希望这是有道理的,如果需要,我非常愿意分享我的电子表格。

克雷格

编辑-

感谢汤姆的反馈,希望以下内容有助于更好地描述它?

我目前正在使用以下 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

理想情况下,我希望取消隐藏功能检查一个名为(“引号”)的单元格是否有 1 到 10 之间的数字,然后 根据该数字取消隐藏列。

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")

您可以使用 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