嘿,我有以下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。
我猜它可能与该框的数组编号有关,因为它可能正在寻找 0 而不是数组中的数字 6 所以它从 6 而不是 0 开始,因为它是它所看到的数组中的第一个文本框。
我可以做些什么才能让它们在同一个数组中工作?
答案 0 :(得分:1)
哼......似乎VBA中的文本框没有Click
事件,因此当我将其更改为处理Change
(无双关语)事件时,它会显示弹出窗口我在文本框中键入了一个字母。
Private Sub textboxBox_Change() 'was textboxBox_Click()
MsgBox "worked"
End Sub