VBA Excel Userform EventHandlerdynamic生成的控件无法按预期方式工作
我在Excel 2013中工作,用运行时创build的控件devise一个用户窗体。 我有麻烦制作一个function,将触发dynamic创build的控件的更改事件。
这些控件包含在一个独立的类模块中,用于创build并pipe理它们。 我想添加一个在combobox的变化事件上触发的函数,所以我声明了WithEvents:
Private WithEvents myComboBox As MSForms.ComboBox ... other controls and variable declarations...
我有一个函数传递了框架,我想控制在,以便我可以创build类内的所有组件。
Sub initialize(myID As String, myFrame As MSForms.Frame, Left As Double, Top As Double) ... Set myComboBox = myFrame.Controls.Add("Forms.ComboBox.1", myID & "_comboBox") ... End Sub
这一切都起作用,并且combobox被创build并且属性改变了,尽pipemyComboBox
成功改变了combobox的显示方式。
由于myComboBox
被声明为WithEvents
,我可以在下拉菜单中findmyComboBox_Change
作为选项,并将其放入模块中:
Private Sub myComboBox_Change() MsgBox ("Change Event Fired") End Sub
但是这个函数不会运行,我不知道为什么。 当进行更改时,消息框不会出现,放入此函数的断点不会停止任何代码的运行。 我究竟做错了什么?
借助于一些来自斯提亚斯的探索性问题,我发现了什么是错的。 包含myComboBox
的类不是由为整个用户窗体范围声明的variables保存的。 在创build完成的函数完成后,组件仍然在myFrame
,但被事件触发的函数被遗忘了