代码之家  ›  专栏  ›  技术社区  ›  Robino

单击事件以获取Excel中VBA框架内的按钮

  •  4
  • Robino  · 技术社区  · 12 年前

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

    框架对象>编辑

    现在我可以在这个框架中添加一个按钮了。太棒了

    如何向该按钮添加_Click事件,使其运行宏?

    1 回复  |  直到 12 年前
        1
  •  5
  •   Zhenya    6 年前

    基本上,您需要做的是创建自己的类,例如“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