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 ,但被事件触发的函数被遗忘了