工作表上的多个切换button可以触发一个macros

我有20个切换button设置


Public Sub ToggleButton1_Click() Check_All If ToggleButton1.value = True Then ToggleButton1.BackColor = vbGreen Else: ToggleButton1.BackColor = vbRed End If End Sub 

 Public Sub ToggleButton2_Click() Check_All If ToggleButton2.value = True Then ToggleButton2.BackColor = vbGreen Else: ToggleButton2.BackColor = vbRed End If End Sub 

我试图让他们触发application.onkey,如:

 Application.OnKey "%a", "Sheet1.ToggleButton1_Click" Application.OnKey "%b", "Sheet1.ToggleButton2_Click" 

当所有button都为“真”时,使用Check_all将执行以下操作,在触发另一个“macros”之前将切换button恢复到“假”状态。


 Sub Check_All() Dim tb As Object For Each tb In Me.OLEObjects If tb.ProgId = "Forms.ToggleButton.1" Then If tb.Object.value <> True Then Exit Sub End If Next CommandButton0_Click End Sub 

 Private Sub CommandButton0_Click() Dim x As Integer For x = 1 To 20 Worksheets("Sheet1").OLEObjects("ToggleButton" & x).Object.value = False Next x CommandButton3_Click End Sub 

但我似乎无法得到application.onkey的工作,我现在完全失去了。

这是一个连接到可编程USBbutton的系统,我真的依靠onkeyfunction,除非有更好的方法?

您可以将macros分配给Excel中的快捷键。 您需要模拟切换button点击,如下所示:

 Sub CtrlShiftA() ToggleButton1.Value = Not ToggleButton1.Value End Sub 

然后有你的切换button子,只要你喜欢:

 Private Sub ToggleButton1_Click() If ToggleButton1.Value = True Then ToggleButton1.BackColor = vbGreen Else ToggleButton1.BackColor = vbRed End If End Sub 

然后在查看 – >macros – >查看macros点击选项..:

在这里输入图像说明

按下Shift + ACtrl + Shift + A作为快捷键:

在这里输入图像说明

现在点击确定,并享受你的shurtcut键。