Excel VBA标识对象名称中的最大数字

时间:2014-01-28 11:20:14

标签: excel vba excel-vba

我创建一个包含团队成员列表的表单作为复选框,然后为每个选定的人运行某些操作。我将复选框命名为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

1 个答案:

答案 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