从宏调用ActiveX控件按钮

时间:2016-08-23 22:18:23

标签: excel-vba vba excel

我编写了一个VBA-Excel代码,按下工作表上的ActiveX控件按钮即可完成。

我不想总是按它来运行它,并希望基于另一个宏(单独)来控制它的调用。

是否有可能,如果是,请分享有关它的见解。

这是我的工作表的样子,我想从一个单独的宏调用该按钮:

This is how my worksheet looks like and i want to invoke that button from a separate macro

1 个答案:

答案 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的子调用。