如何在 VBA 中创建带有复选框的简单用户表单

How to Create a Simple Userform with Checkboxes in VBA

我对 VBA 非常陌生,我正在尝试创建一个电子表格,该电子表格使用复选框用户表单来填充电子表格中的 table。我已经能够让 table 填充,但是如果一个框被意外选中并且未被选中,table 仍然填充。如何让 table 在一个框未选中后恢复为空白,什么是对 33 个复选框进行编码以填充电子表格中的 33 个空格的有效方法。请在我的描述中查看辅助图片。

谢谢,

用户表单图片

电子表格图像

将 CheckBox ControlSource 属性 设置为范围地址会将其 link 设置为范围。如果范围不合格 A1 复选框将 link 到用户窗体打开时作为 ActiveSheet 的工作表。要限定地址,请在单引号中添加范围的父工作表名称,后跟感叹号,最后添加范围相对地址 'Check List'!A1

最初,复选框将变灰,表示 linked 单元格为空。当您选中和取消选中它时,linkedcell 值将在 True 和 False 之间切换。

演示用户表单代码

Private Sub UserForm_Initialize()
    Dim Left As Single, Top As Single
    Dim cell As Range, row As Range, check As MSForms.CheckBox
    Top = 25
    Left = 25
    With Worksheets("Check List")
        For Each row In .Range("A2:K4").Rows
            For Each cell In row.Cells
                Set check = Me.Controls.Add("Forms.CheckBox.1")
                With check
                    .ControlSource = "'" & cell.Parent.Name & "'!" & cell.Address(RowAbsolute:=False, ColumnAbsolute:=False)
                    .Left = Left
                    .Top = Top
                    Left = Left + 12
                End With
            Next
            Left = 25
            Top = Top + check.Height + 2
        Next
    End With
End Sub