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

我创build一个表单与团队成员列表作为checkbox,然后将运行每个选定的人的某些行动。 我已经命名checkboxCheckBox1-10。 在代码中使用循环遍历所有的checkbox:

For i = 1 To 10 If Me.("CheckBox" & i.Value = True 'Do whatever 

如果一个新的团队成员需要添加到表单中,我已经创build了关于命名格式应该是checkbox的说明,但是不要让人们进入代码并改变for循环,无论如何,我可以通过VBA确定最高的checkbox编号所以我可以在我的循环,而不是硬编码使用这个?

很明显,我知道用户仍然可以在表单上犯错误 – 错误地命名checkbox,删除不存在的成员,从而删除循环中的一个数字,只是试图最小化它们与代码的交互

稍微改变下面提供的答案,所以它不适用于这个工作的单选button:

 Dim cb As Variant For Each cb In Me.Controls If TypeName(cb) = "CheckBox" 'your code here End If Next 

是的,你可以简单地使用:

 YourWorksheet.Checkboxes.Count 

此外,你可以遍历所有的checkbox与每个语句:

 For Each cb In Yourworksheet.Checkboxes 'Your code here Next 

如果您处于用户表单中,则不存在CheckBox集合。 但是,您可以使用此代码遍历所有checkbox:

 Dim cb As Variant For Each cb In Me.Controls If TypeOf cb Is MSForms.CheckBox Then 'your code here End If Next