嘿所有我有以下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
1类:
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
上面的代码 works just fine 用于 comboboxes 时 . 但是,一旦我到达 textbox within that array ,它就永远不会出现msgbox弹出窗口 .
我猜它可能与该框的数组编号有关,因为它可能正在寻找 0 而不是数组中的数字 6 所以它从 6 而不是 0 开始,因为它是数组中的第一个文本框它看到 .
我能做些什么才能让它们在同一个数组中工作?
1 回答
嗯...似乎VBA中的文本框没有
Click
事件,因此当我将其更改为处理Change
(无双关语)事件时,如果我在文本框中键入一个字母,它会显示弹出窗口 .