嘿,我有以下的VBA代碼,允許我在動態創建的組合框和文本框上的點擊事件到用戶窗體上。組合框和文本框的VBA動態數組單擊事件
窗體:
Option Explicit
Dim comboboxBoxColct As New Collection
Dim textboxBoxColct As New Collection
Private Sub UserForm_Activate()
Dim comboboxEvent As Class1
Dim textboxEvent As Class1
'..lots more code within here
If LCase(TypeName(controller(i))) = "combobox" Then
Set comboboxEvent = New Class1
Set comboboxEvent.comboboxBox = controller(i)
comboboxBoxColct.Add comboboxEvent
ElseIf LCase(TypeName(controller(i))) = "textbox" Then
Set textboxEvent = New Class1
Set textboxEvent.textboxBox = controller(i)
textboxBoxColct.Add textboxEvent
End If
End Sub
的Class1:
Option Explicit
Public WithEvents comboboxBox As MSForms.ComboBox
Public WithEvents textboxBox As MSForms.TextBox
Private Sub comboboxBox_Click()
MsgBox "worked"
End Sub
Private Sub textboxBox_Click()
MsgBox "worked"
End Sub
上面的代碼作品使用它爲組合框時就好。但是,一旦我得到文本框它從來沒有msgbox彈出。
我猜測它可能會,因爲它可能會尋找一個,而不是任何的數量是數組中所以它的起點在,而不是有那箱的序列號做因爲它是第一個看到的數組文本。
我能做些什麼才能讓他們在同一個陣列中工作?
'textboxBox',真的嗎? ;-) FWIW我會使用'如果TypeOf控制器(i)是MSForms.TextBox'而不是字符串型'TypeName'檢查。我想我們可能需要看看'controller'數組是如何填充的。 –