组合框和文本框的VBA动态数组单击事件
嘿,我有以下的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弹出。
我猜测它可能会,因为它可能会寻找一个,而不是任何的数量是数组中所以它的起点在,而不是有那箱的序列号做因为它是第一个看到的数组文本。
我能做些什么才能让他们在同一个阵列中工作?
呜呜......似乎在VBA一个文本框没有一个Click
事件,所以当我改变了它,而不是处理Change
(没有双关语意)事件,它表明弹出,如果我键入一个字母到文本框中。
Private Sub textboxBox_Change() 'was textboxBox_Click()
MsgBox "worked"
End Sub
啊废话,我想说,然后移动到另一个标签,并忘记了! –
根据您使用的更改,最好使用'TextBox_Exit(ByVal Cancel As MSForms.ReturnBoolean)'。例如:当用户需要在文本框上键入内容并且文本被改变时,所以他不能写全文并且文本被改变 – danieltakeshi
'textboxBox',真的吗? ;-) FWIW我会使用'如果TypeOf控制器(i)是MSForms.TextBox'而不是字符串型'TypeName'检查。我想我们可能需要看看'controller'数组是如何填充的。 –