访问窗体控件​​的事件过程用VBA在Excel中(Accessing Event Procedure

2019-10-31 18:20发布

有没有什么方法来定义表单控件事件过程,如与ActiveX对象的情况?

我目前增加了/一个GUI用户删除的ActiveX命令按钮,但遇到了错误91试图与每个按钮添加一个项目添加到全局集合时。 我最好的猜测是,因为这么多讨厌的现象 。 随着项目的当前状态,我最好的选择是切换到使用表单控制按钮,如果我能够定义他们的事件过程。 如果不是这样,我可能需要以某种方式保存全局变量和操作ActiveX控件对象后读他们回来。

Answer 1:

如果你只是想添加按钮和拍摄的点击,你可以指定一个共同的宏观他们,基于交换机上的按钮(当您创建它,你会集的名称是采取什么样的行动,并且可以通过以下方式访问Application.Caller在被调用过程)

Sub AddButtons()

    With ActiveSheet.Buttons.Add(100, 100, 50, 50)
        .Name = "button1"
        .OnAction = "ClickHandler"
    End With
    With ActiveSheet.Buttons.Add(200, 100, 50, 50)
        .Name = "button2"
        .OnAction = "ClickHandler"
    End With


End Sub

Sub ClickHandler()
    Dim bName As String

    bName = Application.Caller
    Select Case bName
        Case "button1": MsgBox "Clicked First button"
        Case "button2": AnotherSub 
    End Select

End Sub


文章来源: Accessing Event Procedures of Form Controls with VBA in Excel