我正在尝试编写代码来处理"更改"我的用户表单上任何ComboBox的事件。
我按this问题的答案,创建了一个单独的课程等。
但是,它不起作用。在新项目上使用相同的代码可以正常工作,当我使用"一步一步"执行(F8),但在使用正常运行时它不会。
看着其他人类似的困境,我添加了#34; 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
答案 0 :(得分:2)
ComboBox_Collection
需要是一个全局变量(至少是表单模块的全局变量),或者只要UserForm_Initialize
Sub完成执行就会消失/超出范围