excel - Excel 中 VBA 框架内按钮的单击事件

标签 excel events vba activex frame

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

框架对象>编辑

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

如何向此按钮添加 _Click 事件以便它运行宏?

最佳答案

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

因此您可以处理“btn”发送的所有事件并进一步转发。然后您必须创建一个自定义接口(interface)(空类)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 接口(interface),例如:

Implements IXButtonEventHandler

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

在 Workbook_Load 或诸如此类的情况下,您需要创建 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

关于excel - Excel 中 VBA 框架内按钮的单击事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15510967/

相关文章:

vba - 从oracle获取数据到excel并将具有相同单元格名称的数据发送到excel中不同工作表的代码

java - 使用 java programmig 读取 Ubuntu 14.04 鼠标事件文件 (/dev/input/event3) 时出错

java - 使用 AWT 按钮并检测是否被单击

javascript - 指定秒的 JW Player 事件

vba - 如何让 Excel VBA 在 If and Then 之后停止

vba - Worksheet.Paste 和 Range.PasteSpecial 之间的区别

vba - 如何检查字符串是否只包含字母?

events - 将事件监听器添加到 Excel 文本框(失去焦点)

javascript - 如何使用javascript实现 "Fit sheet on one page"打印

ms-access - 关闭数据库时执行代码