如何在VBA中使用复选框创建简单的用户窗体

时间:2017-11-30 04:34:21

标签: excel vba excel-vba checkbox userform

我对VBA非常陌生,我正在尝试创建一个电子表格,该电子表格使用复选框userform来填充电子表格中的表格。我已经能够填充表格,但是如果意外地检查了一个框并且未选中该框,则表格将保持填充状态。在取消选中框后,如何让表格变回空白?如何有效地编写33个复选框以填充电子表格中的33个空格。请参阅附带的图片以帮助我的描述。

谢谢,

用户形象
enter image description here

电子表格图片
enter image description here

1 个答案:

答案 0 :(得分:0)

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

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

Control Source Property Image

Demo Userform Gif

演示用户形式代码

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