组合框和文本框的VBA动态数组单击事件

时间:2017-09-29 13:48:24

标签: arrays excel vba excel-vba vb6

嘿,我有以下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

enter image description here

上面的代码组合框中使用时效果很好。但是,一旦我到达该阵列中的文本框,它就永远不会弹出msgbox。

我猜它可能与该框的数组编号有关,因为它可能正在寻找 0 而不是数组中的数字 6 所以它从 6 而不是 0 开始,因为它是它所看到的数组中的第一个文本框。

我可以做些什么才能让它们在同一个数组中工作?

1 个答案:

答案 0 :(得分:1)

哼......似乎VBA中的文本框没有Click事件,因此当我将其更改为处理Change(无双关语)事件时,它会显示弹出窗口我在文本框中键入了一个字母。

Private Sub textboxBox_Change() 'was textboxBox_Click()
    MsgBox "worked"
End Sub