首页 > 解决方案 > ComboBox Enter 事件从对象浏览器中消失

问题描述

我有一个类模块,我在我的 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

标签: vbaexcelcomboboxobjectbrowser

解决方案


一开始,没有足够的声誉作为评论发布,所以发布作为答案。

我观察到,在工作表中使用的控件比在用户表单中使用的事件和方法要少,我曾在 2003 年的空白工作表和不同系统上的 Office 365 上尝试过此操作。


推荐阅读