我创建一个包含团队成员列表的表单作为复选框,然后为每个选定的人运行某些操作。我将复选框命名为CheckBox1-10。在代码中使用循环来遍历所有复选框:
For i = 1 To 10
If Me.("CheckBox" & i.Value = True
'Do whatever
如果新的团队成员需要添加到表单中,我已经创建了关于复选框的命名格式应该是什么的说明,而不是让人们进入代码并且更改for循环无论如何我可以通过VBA确定最高的复选框号码,所以我可以在我的for循环而不是硬编码中使用它?
显然我知道用户仍然可以在表单上出错 - 错误地命名复选框,删除不再存在的成员,从而删除循环中的数字,但只是尽量减少他们与代码的交互
稍微改变下面提供的答案,因此它不适用于这个工作的单选按钮:
Dim cb As Variant
For Each cb In Me.Controls
If TypeName(cb) = "CheckBox"
'your code here
End If
Next
答案 0 :(得分:2)
是的,你可以简单地使用:
YourWorksheet.Checkboxes.Count
此外,您可以使用for语句遍历所有复选框:
For Each cb In Yourworksheet.Checkboxes
'Your code here
Next
如果您在用户表单中,则没有CheckBox集合。但是,您可以使用以下代码遍历所有复选框:
Dim cb As Variant
For Each cb In Me.Controls
If TypeOf cb Is MSForms.CheckBox Then
'your code here
End If
Next