在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。