基本上,您需要做的是创建自己的类,例如“XButton”。在这个“XButton”中,框架内的按钮对象将有一个事件处理程序。
因此,您可以处理“btn”发送的所有事件,并将其进一步转发。然后,您将不得不创建一个自定义接口(空类)IXButtonEventHandler,它看起来像这样:
Option Explicit
Public Sub Click(Sender as XButton)
End Sub
所以,你的自定义类
X按钮
将如下所示:
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或其他什么程序上,您需要创建一个XButtons集合,并将它们附加到框架控件:
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