在Excel中的VBA框架内单击“事件”按钮

问题描述 投票:2回答:1

在Excel中,我将ActiveX框架插入工作表。右键单击此框架可让我选择:

框架对象>编辑

现在我可以在此框架中添加一个按钮。大。

如何将Click事件添加到此按钮以便它将运行宏?

excel events vba activex frame
1个回答
4
投票

基本上,您需要做的是创建自己的类,例如“Button”。在这个'Button'中,将有一个位于框架内的按钮对象的事件处理程序。

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

Option Explicit

Public Sub Click(Sender as XButton)

End Sub

因此,您的自定义类XButton将如下所示:

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
© www.soinside.com 2019 - 2024. All rights reserved.