【问题标题】:Dynamic Checkbox select all动态复选框全选
【发布时间】:2017-05-22 19:06:56
【问题描述】:

我使用下面的代码创建了一个带有动态复选框的用户表单。我正在努力弄清楚如何在底部(或任何地方)添加全选/取消全选复选框,因为列表是动态的。任何帮助将不胜感激。

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

【问题讨论】:

    标签: excel vba checkbox userform


    【解决方案1】:

    您应该在设计时创建“全选”复选框,而不是在运行时 - 否则分配 Event-Routine 会有点棘手(请参阅 this discussion

    您可以通过设置 top 属性将 SelectAll-checkBox 放在底部(就像您已经做的那样)。

    然后将 Click-Event 分配给该复选框:

    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
    

    【讨论】:

    • 是的,这就是我在提出问题后开始尝试和做的事情。我只是无法获得像 for 语句中的 2 这样的语法,哈哈。谢谢 FunThomas!
    猜你喜欢
    • 1970-01-01
    • 2013-06-27
    • 2023-03-12
    • 1970-01-01
    • 2016-02-20
    • 2011-01-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多