0

有没有办法为窗体控件定义事件过程,例如 ActiveX 对象的情况?

我有一个 GUI,当前由用户添加/删除 ActiveX 命令按钮,但在尝试将项目添加到全局集合并添加每个按钮时遇到错误 91 。我最好的猜测是因为这种令人讨厌的现象。在项目的当前状态下,如果我能够定义它们的事件过程,我最好的选择是切换到使用表单控制按钮。如果没有,我可能需要以某种方式保存全局变量并在操作 ActiveX 控件对象后将它们读回。

4

1 回答 1

2

如果您只想添加按钮并捕获点击,您可以为它们分配一个通用宏,并根据按钮的名称切换执行的操作(您将在创建它时设置它,并且可以通过Application.Callerin访问被调用的过程)

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
于 2012-05-23T19:01:44.017 回答