组合框数组上的VBA单击事件
嘿,我有下面的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
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
何时被调用?