如何用VBA仅统计UserForm1中Page1的CheckBox数量?
解决仅统计MultiPage1中Page1内CheckBox数量的问题
你的代码现在会统计整个UserForm里的所有CheckBox,核心原因是你遍历的是UserForm1.Controls——这个集合包含了窗体上的所有控件,自然也会覆盖MultiPage控件里的每一个页面。要只统计Page1的CheckBox,你需要把遍历范围精准限定在MultiPage1.Pages(0)的控件集合里(VBA中MultiPage的Pages索引从0开始,所以Page1对应的是Pages(0))。
另外你的代码还有两个小问题需要修正:
- 重复定义了
cnt变量,先声明为Integer又声明为Long,这会触发编译错误 - 开头的
cnt = Count.CheckBox()是无效语句,完全可以删掉
修正后的代码如下:
Private Sub CommandButton1_Click() Dim cnt As Long Dim ctrl As msforms.Control cnt = 0 ' 仅遍历MultiPage1的第一个页面(Page1)的控件集合 For Each ctrl In Me.MultiPage1.Pages(0).Controls If TypeOf ctrl Is msforms.CheckBox Then cnt = cnt + 1 End If Next ctrl MsgBox "Page1中的CheckBox数量为:" & cnt End Sub
关键细节说明:
Me.MultiPage1.Pages(0):精准定位到MultiPage控件里的第一个页面(也就是你说的Page1),如果你的Page1在MultiPage里是第二个页面,就把索引改成1,以此类推- 遍历这个页面专属的
Controls集合,只会检查该页面内的控件,不会涉及Page2、Page3 - 统一使用
Long类型的cnt,比Integer能容纳更大的数值,避免控件数量较多时出现溢出问题
内容的提问来源于stack exchange,提问作者MickeyMe
相关产品推荐
相关产品推荐

