在Excel中,单击“框架”中针对VBA的button的“事件”

在Excel中,我将一个ActiveX框架插入到工作表中。 右键点击这个框架可以让我select:

框架对象>编辑

现在我可以添加一个button到这个框架。 大。

如何添加一个_Click事件到这个button,以便它将运行一个macros?

基本上,你需要做的是创build你自己的类,例如,“XButton”。 在这个“XButton”里面,会有一个框架内的button对象的事件处理程序。

所以你可以处理'btn'发送的所有事件并进一步转发。 然后,你将不得不创build一个自定义的接口(空类)IXButtonEventHandler,看起来像这样:

 Option Explicit Public Sub Click(Sender as XButton) End Sub 

所以,你的自定义类将如下所示:

 Private WithEvents btn as MSForms.CommandButton Private mEventHandler as IXButtonEventHandler Public Sub CreateObject(EventHandlerOf as MSForms.CommandButton, EventHandler as IXButtonEventHandler) Set btn = EventHandlerOf Set mEventHandler = EventHandler End Sub Private Sub btn_Click() If not mEventHandler is Nothing then mEventHandler.Click(Me) End Sub 

比方说,您的工作簿将是事件处理程序,并需要实现IXButtonEventHandler接口,例如:

 Implements IXButtonEventHandler Private Sub IXButtonEventHandler_Click(Sender as XButton) 'your code End Sub 

在Workbook_Load或者你不需要创build一个XButton的集合,并将它们附加到你的框架控件:

 Dim xbtn as Collection Private Sub AttachButtons() Set xbtn = New Collection Dim i as Long For i = 0 to 3 Dim xb as New XButton xb.CreateObject <YourFrame>.Controls("CommandButton" & Cstr(i)), Me xbtn.Add xb Next i End Sub