我想編寫代碼來處理我的用戶窗體上任何組合框的「更改」事件。VBA代碼在執行時的行爲不同
我經過this問題的答案,並創建一個單獨的類,等等
但是,這是行不通的。在一個新項目中使用相同的代碼可以正常工作,這個代碼在這個項目上有時會用到,當我使用「逐步執行」執行(F8)時,但是當使用正常運行時它不會。
看着其他人的類似困境,我添加了「DoEvents」,但沒有幫助。
這是我在窗體
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
您能告訴我們您希望發生什麼嗎? –
@ScottMarcus,我想要一個簡單的代碼來處理用戶窗體上給定類型的所有控件的「更改」事件。 – mathgenius