【问题标题】:Calling an ActiveX control Button from a macro从宏调用 ActiveX 控件按钮
【发布时间】:2016-08-24 10:57:33
【问题描述】:

我编写了一个 VBA-Excel 代码,通过按下放置在工作表上的 ActiveX 控件按钮来执行。

我不想总是按下它让它运行,而是想根据另一个宏(单独的)来控制它的调用。

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

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

【问题讨论】:

  • 为什么不能直接调用click事件呢?
  • 我想自动化这个过程

标签: excel vba


【解决方案1】:

为了运行附加到 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。否则,这些 subs 不能从模块调用,而只能从位于 Sheet1 的 sub 调用。

【讨论】:

    猜你喜欢
    • 2014-06-05
    • 1970-01-01
    • 1970-01-01
    • 2012-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多