如何在 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
我对 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