将ActiveX按钮从多个工作表组合到一个按钮

时间:2019-01-21 18:50:15

标签: excel vba activex

我正在尝试在excel电子表格中创建一个按钮,该按钮以特定顺序激活工作簿中的所有其他按钮。这些按钮位于4个不同的工作表中。我试图在一个工作表中简单地创建一个按钮,然后从该按钮调用其他按钮,如下所示:

Public Sub CommandButton1_Click()
    Button2_Click
    Button3_Click
    Button4_Click
    Button5_Click
    Button6_Click
End Sub

这不起作用。我在想,也许我需要某种方式来引用每个按钮所在的工作表?

2 个答案:

答案 0 :(得分:1)

事件处理程序之所以是Private是有原因的。使它们Public可以工作,但这不是您应该做的。

将代码移出这些处理程序,并移入其自己的公共过程;然后从相应的处理程序调用这些过程-并从此命令按钮处理程序按适当的顺序调用相同的过程。

例如,您采用以下方式:

Private Sub Button2_Click()
    'do stuff
End Sub

将其变为:

Private Sub Button2_Click()
    DoStuff
End Sub

Public Sub DoStuff()
    'do stuff
End Sub

然后,您可以在任何需要的地方调用DoStuff

永远不要直接调用事件处理程序,也不必如此。

答案 1 :(得分:0)

工作表模块中的私有事件处理程序甚至可以通过以下方式启动。 假设您有一个名为“ ActiveXButtons”的工作表(其标题),上面有Button2,并且该工作表中包含以下按钮事件代码:

Private Sub Button2_Click()
    ' ...
End Sub

然后,您可以通过间接寻址工作表的代号来触发上述按钮的事件:

Application.Run Worksheets("ActiveXButtons").CodeName & ".Button2_Click"

或简称:

Run “Sheet2.Button2_Click“