动态复选框 select 全部
Dynamic Checkbox select all
我使用以下代码创建了一个带有动态复选框的用户表单。由于列表是动态的,因此我正在努力弄清楚如何在底部(或任何地方)添加 select all/unselect all 复选框。任何帮助将不胜感激。
Private Sub UserForm_Initialize()
'Create Checkboxes form with director names
Dim lRow As Long
Dim i As Long
Dim chkBox As MSForms.CheckBox
lRow = Cells(Rows.Count, 2).End(xlUp).Row
Sheets("Directors_Database").Activate
For i = 4 To lRow
Set chkBox = Me.Controls.Add("Forms.CheckBox.1", "CheckBox_" & i)
chkBox.Caption = Worksheets("Directors_Database").Cells(i, 2).Value
chkBox.Left = 5
chkBox.Top = 5 + ((i - 2) * 20)
chkBox.Width = 350
Next i
Set chkBox = Nothing
End Sub
您应该在设计时创建 "select all" 复选框,而不是在运行时 - 否则分配事件例程会变得有点棘手(参见 this discussion)
您可以通过设置 top
属性 将 SelectAll-checkBox 放在底部(就像您已经做的那样)。
然后将点击事件分配给该复选框:
Private Sub CheckBoxSelectAll_Click()
Dim c As Control
For Each c In Me.Controls
If TypeOf c Is MSForms.CheckBox Then
c.Value = CheckBoxSelectAll.Value
End If
Next c
End Sub
我使用以下代码创建了一个带有动态复选框的用户表单。由于列表是动态的,因此我正在努力弄清楚如何在底部(或任何地方)添加 select all/unselect all 复选框。任何帮助将不胜感激。
Private Sub UserForm_Initialize()
'Create Checkboxes form with director names
Dim lRow As Long
Dim i As Long
Dim chkBox As MSForms.CheckBox
lRow = Cells(Rows.Count, 2).End(xlUp).Row
Sheets("Directors_Database").Activate
For i = 4 To lRow
Set chkBox = Me.Controls.Add("Forms.CheckBox.1", "CheckBox_" & i)
chkBox.Caption = Worksheets("Directors_Database").Cells(i, 2).Value
chkBox.Left = 5
chkBox.Top = 5 + ((i - 2) * 20)
chkBox.Width = 350
Next i
Set chkBox = Nothing
End Sub
您应该在设计时创建 "select all" 复选框,而不是在运行时 - 否则分配事件例程会变得有点棘手(参见 this discussion)
您可以通过设置 top
属性 将 SelectAll-checkBox 放在底部(就像您已经做的那样)。
然后将点击事件分配给该复选框:
Private Sub CheckBoxSelectAll_Click()
Dim c As Control
For Each c In Me.Controls
If TypeOf c Is MSForms.CheckBox Then
c.Value = CheckBoxSelectAll.Value
End If
Next c
End Sub