首页 文章

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

提问于
浏览
2

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

enter image description here

上面的代码 works just fine 用于 comboboxes 时 . 但是,一旦我到达 textbox within that array ,它就永远不会出现msgbox弹出窗口 .

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

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

1 回答

  • 1

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

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

相关问题