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
我制作了一个电子表格,想要隐藏和取消隐藏切换按钮上的列,但基于名为(“引号”)的单元格中的值(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