我有一个类模块,我在我的 Excel VBA 项目中扩展 MSForms ComboBox 的功能。我将组合框引用添加到我的班级:
Private WithEvents cBox As ComboBox
我为这个组合框添加了一堆事件处理程序,包括 Enter 事件:
Private Sub cBox_Enter()
...
End Sub
这工作正常,突然间我的 Enter 事件停止触发。所以我开始调查,发现它不再被列为“cBox”事件列表中的事件之一。事实上,其他事件也丢失了。发生这种情况时,我没有对 References 进行任何更改。在此之前我所做的最后一个更改是注释掉一些我没有用来完成我的功能的事件。评论它们并恢复它们并没有带回事件。现在,所有缺少的事件处理程序都列为类本身下的函数(例如 cBox_Enter)
当前列表有:
BeforeDragOver
BeforeDroporPaste
Change
Click
DblClick
DropButtonClick
Error
KeyDown
KeyPress
KeyUp
MouseDown
MouseMove
MouseUp
但是,用户窗体上的相同 ComboBox 控件仍然列出了所有缺少的事件:
AfterUpdate (*)
BeforeDragOver
BeforeDroporPaste
BeforeUpdate (*)
Change
Click
DblClick
DropButtonClick
Enter (*)
Error
Exit (*)
KeyDown
KeyPress
KeyUp
MouseDown
MouseMove
MouseUp
类中缺少带有 (*) 的事件,但存在于 UserForm 列表中。我还去了对象浏览器并查看了组合框对象,在类浏览器中这些事件也丢失了。
有没有人见过这个并且知道如何在类模块中恢复这些事件?
注意:我使用的是 Excel 2003