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
子程序完成,它将消失/超出范围