组合框数组上的VBA单击事件

组合框数组上的VBA单击事件,vba,excel,Vba,Excel,嘿,我有下面的VBA代码,允许我在用户窗体上动态创建的组合框和文本框上有一个单击事件 用户表单: Option Explicit Dim comboboxBoxColct As New Collection Private Sub UserForm_Activate() Dim comboboxEvent As Class1 Dim controller(100) As Object '..lots more code within here

嘿,我有下面的VBA代码,允许我在用户窗体上动态创建的组合框和文本框上有一个单击事件

用户表单:

Option Explicit

Dim comboboxBoxColct  As New Collection

Private Sub UserForm_Activate()
Dim comboboxEvent           As Class1
Dim controller(100)         As Object

   '..lots more code within here
   With controller(i)
      .Name = "cmdBOM" & i
      .Top = 10
      .ForeColor = vbBlack
      .Height = 15
      .FontName = "Times New Roman"
      .FontSize = 6
      .AutoSize = False
      .Caption = "Add New Row"
      .BackColor = RGB(204, 255, 201)
      .TabStop = True
      .TabIndex = i
   End With

   Set comboboxEvent = New Class1
   Set comboboxEvent.comboboxBox = controller(i)
   comboboxBoxColct.Add comboboxEvent
End Sub
类别1:

Option Explicit

Public WithEvents comboboxBox As MSForms.ComboBox

Sub SetCombobox(ctl As MSForms.ComboBox)
    Set comboboxBox = ctl
End Sub

Private Sub comboboxBox_Click()
    If comboboxBox.ListIndex > -1 Then
        MsgBox "You clicked on " & comboboxBox.Name & vbLf & _
               "The value is " & comboboxBox.Value
    End If
End Sub
上面的代码运行得很好。但是,当我单击组合框并选择某个内容时,msgbox会显示:

你点击了

价值是

查看\u Click()事件时,.Name.Value没有值,我不确定原因是什么?我在设置comboboxBox=ctl上放置了一个断点,它似乎总是出现在


我能做些什么才能让它正常工作?

您是否尝试过
Change
事件?只有当我在下拉列表中选择一个值时,弹出窗口才会显示。对,因此尝试将代码放在
Change
事件上,而不是在您最初下拉组合框时也会触发的
Click
事件上。结果仍然相同。这可能是因为它是一个数组,除了行中最后一个值之外,它没有保存每个combobox值吗?我注意到您的
Sub-SetCombobox
不是您在这里所说的:
Set-comboboxEvent.comboboxBox
,所以我不确定如何调用
SetCombobox
Sub。是否检查了“局部变量”窗口以验证ctl变量不是“Nothing”?或者在断点处检查调用堆栈,查看
SetCombobox
何时被调用?