如何将系统事件绑定到VBA类事件处理程序

时间:2012-11-28 01:49:42

标签: winapi events excel-vba excel-2003 vba

在VBA类模块中使用WithEvents MSForms对象时,我在过去几天一直试图解决VBA中缺少继承的问题,可以允许将多个事件处理程序分配给一系列控件一个UserForm。我主要处理_Enter_Exit事件,这些事件位于MSForms.Control而不是我的控件所属的(下属)MSForms.TextBox。因此,将每个TextBox添加到类模块中的tbTextBox变量中:

Private WithEvents tbTextBox as MSForms.TextBox

Private Sub tbTextBox_Exit()
 ' Do Something Here - doesn't work
End Sub

Private Sub tbTextBox_DblClick()
 ' Do Something Here - works
End Sub

不适用于Exit(在MSForms.Control中),虽然DblClick工作正常(在MSForms.TextBox中)。

我或多或少处于这样的地步,因为我知道这些事件会被提升(只是在父级别),我想通过Win32 API挂钩我的表单中的控件,并手动观看对于发生的任何事件,然后举起我自己的事件来重新实现我自己的功能。

到目前为止,我从谷歌那里得到了一个空白,但我认为一些更高级的VBA编码器比我可能指向正确的方向。还应该注意,我正在使用Excel 2003,因此VB.Net不是一个选项,并且环境是高度沙盒化的,因此不能使用外部模块或.dll。

0 个答案:

没有答案