EP07. “Loop through Controls 循环遍历表单控件”
🔒 登录后可标记已读- 表单上控件很多时(比如一堆复选框),不用一个个写代码单独处理
- 可以用循环走过
Controls集合、搭配TypeName筛选出想要的控件类型统一处理 - 用「一键清空所有复选框」当例子
- 前置知识:For Each 循环
重点内容
适用版本
桌面版通用(Excel 365 / 2021 / 2019 等)。
打开表单
Private Sub CommandButton1_Click()
UserForm1.Show
End Sub
Clear 按钮:清空所有复选框
Private Sub CommandButton1_Click()
Dim contr As Control
For Each contr In UserForm1.Controls
If TypeName(contr) = "CheckBox" Then
contr.Value = False
End If
Next
End Sub
逻辑说明
For Each contr In UserForm1.Controls:走过表单上所有控件,不管是文本框、按钮还是复选框TypeName(contr) = "CheckBox":用 TypeName 函数判断这个控件是不是复选框类型,只处理符合条件的- 符合条件的就把
Value设成False,达到「一次清空所有复选框」的效果
[截图:表单上原本勾选了好几个复选框,点击 Clear 按钮后全部变回未勾选状态的前后对比]
学完你会
- ✅ 用
For Each...In UserForm1.Controls走过表单上所有控件 - ✅ 用
TypeName筛选出特定类型的控件(例如只处理 CheckBox) - ✅ 用这个方法批量处理一批同类型控件,不用逐个手写重复代码
常见错误
- 没有用
TypeName过滤,直接对所有控件设置Value = False,结果连不该动的控件(比如文本框)也被清空或报错 TypeName判断的字符串拼写错误(大小写其实不影响,但拼错字母就永远匹配不到)- 表单控件很多时忘记这个方法能批量处理,一个个手写重复的代码
Sources
Blog / Website: