VBA代码在执行时的行为不同

我试图编写代码来处理我的用户窗体上任何combobox的“更改”事件。

我回答了这个问题的答案,并创build了一个单独的类,等等。

但是,它不起作用。 在一个新的项目上使用相同的代码工作正常,这个项目上的代码有时工作,当我使用“一步一步”执行(F8),但使用正常运行时不。

看着其他人类似的困境,我添加了“DoEvents”,但没有帮助。

这是我在UserForm中的代码

Private Sub UserForm_Initialize() Dim ComboBox_Collection As Collection Dim ctrl As Control Dim cbc As ComboBox_Class Set ComboBox_Collection = New Collection For Each ctrl In UserForm1.MultiPage.Pages(2).Controls DoEvents If TypeName(ctrl) = "ComboBox" Then DoEvents Set cbc = New ComboBox_Class Set cbc.Control = ctrl ComboBox_Collection.Add cbc DoEvents End If Next ctrl Set cbc = Nothing End Sub 

而名为“ComboBox_Class”的类模块:

 Private WithEvents TriggerComboBox As MSForms.ComboBox Public Property Set Control(CB As MSForms.ComboBox) Set TriggerComboBox = CB End Property Private Sub TriggerComboBox_Change() MsgBox ("yay") End Sub 

ComboBox_Collection需要是一个全局variables(至less是你的表单的代码模块的全局variables),或者一旦你的UserForm_Initialize子程序完成,它将消失/超出范围