Excel vba在单击事件时动态创建复选框

Excel vba在单击事件时动态创建复选框,excel,vba,checkbox,dynamic,onclick,Excel,Vba,Checkbox,Dynamic,Onclick,我在userform上有一个复选框列表,这些复选框是根据Excel工作表上的列表创建的。 我想有一个额外的复选框,当选中时,它将测试列表中所有复选框的标题值。如果与目标字符串匹配,则这些复选框也应选中。 我可以创建列表,但在创建和触发事件后引用复选框是个问题。到目前为止,我只有这些: Private Sub UserForm_Initialize() Dim curColumn As Long Dim LastRow As Long Dim i As Long

我在userform上有一个复选框列表,这些复选框是根据Excel工作表上的列表创建的。 我想有一个额外的复选框,当选中时,它将测试列表中所有复选框的标题值。如果与目标字符串匹配,则这些复选框也应选中。 我可以创建列表,但在创建和触发事件后引用复选框是个问题。到目前为止,我只有这些:

Private Sub UserForm_Initialize()

Dim curColumn   As Long
Dim LastRow     As Long
Dim i           As Long
Dim chkBox      As MSForms.CheckBox

curColumn = 1 'column index

LastRow = Worksheets("Parts").Cells(Rows.Count, curColumn).End(xlUp).Row

For i = 2 To LastRow
    Set chkBox = Me.Controls.Add("Forms.CheckBox.1", "CheckBox_" & i)
    chkBox.Caption = Worksheets("Parts").Cells(i, curColumn).Value
    chkBox.Left = 5
    chkBox.Top = 25 + ((i - 1) * 20)
    chkBox.Width = 200
Next i

End  Sub

您不需要触发事件来选中复选框。创建复选框时,将其添加到(表单的全局)集合对象中。然后,你可以在任何一点上循环它们,并检查它们的标题属性。我不明白。无论复选框是否在集合对象中,当用户与表单交互并进行更改时,我仍然需要在选中某些特定复选框时触发事件,我不是吗?如果你需要从动态创建的控件中捕获事件,那么有一种方法:例如,请参见Siddharth Rout在这里的回答-即按钮,但同样的方法适用于其他类型的控件。另外:更新了上面的链接