我对VBA非常陌生,我正在尝试创建一个电子表格,该电子表格使用复选框userform来填充电子表格中的表格。我已经能够填充表格,但是如果意外地检查了一个框并且未选中该框,则表格将保持填充状态。在取消选中框后,如何让表格变回空白?如何有效地编写33个复选框以填充电子表格中的33个空格。请参阅附带的图片以帮助我的描述。
谢谢,
答案 0 :(得分:0)
将CheckBox ControlSource属性设置为范围地址会将其链接到范围。如果范围不合格A1
,则复选框将链接到Userform打开时作为ActiveSheet的工作表。要限定地址,请在单引号中添加Range的父工作表名称,后跟感叹号,最后添加范围相对地址'Check List'!A1
。
最初,复选框将显示为灰色,表示链接的单元格为空。当您选中并取消选中它时,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