我正在尝试在excel电子表格中创建一个按钮,该按钮以特定顺序激活工作簿中的所有其他按钮。这些按钮位于4个不同的工作表中。我试图在一个工作表中简单地创建一个按钮,然后从该按钮调用其他按钮,如下所示:
Public Sub CommandButton1_Click()
Button2_Click
Button3_Click
Button4_Click
Button5_Click
Button6_Click
End Sub
这不起作用。我在想,也许我需要某种方式来引用每个按钮所在的工作表?
答案 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“