我编写了一个VBA-Excel代码,按下工作表上的ActiveX控件按钮即可完成。
我不想总是按它来运行它,并希望基于另一个宏(单独)来控制它的调用。
是否有可能,如果是,请分享有关它的见解。
这是我的工作表的样子,我想从一个单独的宏调用该按钮:
答案 0 :(得分:0)
要运行附加到ActiveX控件的宏,可以使用以下命令直接调用sub:
CallByName Worksheets("Sheet1"), "CommandButton21_Click", VbMethod
注意,(默认情况下)Excel将在按钮的工作表上创建Private Sub
。如果您希望从模块中调用这些子设备,则必须先删除Private
。另请注意,子名称必须为NameOfTheButton_Click
。
因此,如果上面的代码驻留在模块中的子代码中并且您希望使其工作,则表单上的代码可以是(例如):
Sub CommandButton21_Click()
MsgBox "gotcha"
End Sub
如果您想为Sheet1
上的所有按钮调用所有宏,则以下代码将执行:
Option Explicit
Public Sub tmpSO()
Dim Obj As OLEObject
For Each Obj In Worksheets("Sheet1").OLEObjects
If TypeName(Obj.Object) = "CommandButton" Then
CallByName Worksheets("Sheet1"), Obj.Name & "_Click", VbMethod
End If
Next Obj
End Sub
再次确保Sheet1
上的所有潜点都不是Private
。否则,这些潜艇不能从模块调用,而只能从驻留在Sheet1
的子调用。