我有下面的代碼模塊的工作簿:如何覆蓋正在寫的控件的control_Change事件?
類模塊:clsComboBox
Option Explicit
Private WithEvents MyComboBox As MSForms.ComboBox
Public Property Set cmboControl(cmboBox As MSForms.ComboBox)
Set MyComboBox = cmboBox
End Property
Private Sub MyComboBox_Change()
If MyComboBox.Value = "2" Then
MsgBox "I will be so happy if this ever runs"
End If
End Sub
用戶窗體:UserForm1(包含單個按鈕,CommandButton1的)
Option Explicit
Private Sub CommandButton1_Click()
Dim ctlcombobox As ComboBox
Dim clsobject As clsComboBox
Set ctlcombobox = Me.Controls.Add("Forms.ComboBox.1", "ComboBox1", True)
Set clsobject = New clsComboBox
Set clsobject.cmboControl = ctlcombobox
With ctlcombobox
.Top = 100
.Left = 5
.Width = 200
.Height = 25
.Visible = True
.List = Array("1", "2")
End With
End Sub
我想用我在飛行中創建的每個新組合框覆蓋combobox_change事件。但是,代碼不起作用。當在組合框上選擇「2」時,沒有任何反應。我究竟做錯了什麼?
例如工作簿:
https://www.dropbox.com/s/ctr51lote86fbox/test%20combo%20box.xlsm?dl=0
編輯
謝謝,蒂姆的答案。我不得不創建一個可變長度的數組來容納我在內存中動態創建的所有組合框。 (原來的問題是關於單個組合框,但在我的實際工作表中,我在運行時創建了一個未知數)。
我敢肯定,這將解決我的窗體,我會讓你知道在週二,當我回去工作(唐在家用電腦上沒有辦公室)。順便說一句,如果我創建了一個類型爲userform的可變長度數組,這是否可以讓我處理多個用戶表單,這些用戶表單是我創建的? –