有没有办法为窗体控件定义事件过程,例如 ActiveX 对象的情况?
我有一个 GUI,当前由用户添加/删除 ActiveX 命令按钮,但在尝试将项目添加到全局集合并添加每个按钮时遇到错误 91 。我最好的猜测是因为这种令人讨厌的现象。在项目的当前状态下,如果我能够定义它们的事件过程,我最好的选择是切换到使用表单控制按钮。如果没有,我可能需要以某种方式保存全局变量并在操作 ActiveX 控件对象后将它们读回。
如果您只想添加按钮并捕获点击,您可以为它们分配一个通用宏,并根据按钮的名称切换执行的操作(您将在创建它时设置它,并且可以通过Application.Caller
in访问被调用的过程)
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