EP08. “Controls Collection 用名字动态引用控件”
🔒 登录后可标记已读- 延续 EP07 遍历控件的概念,讲怎么用字符串拼接的方式动态引用一批「名字有规律」的控件(例如 TextBox1、TextBox2……)
- 批量把工作表数据填进对应的文本框
- 也讲
vbModeless怎么让表单跟工作表同时互动 - 前置知识:EP07 的 Controls 集合、字符串拼接
重点内容
适用版本
桌面版通用(Excel 365 / 2021 / 2019 等)。
用 vbModeless 打开表单
Private Sub CommandButton1_Click()
UserForm1.Show vbModeless
End Sub
📌 vbModeless 让表单打开后,工作表本身仍然可以点击操作,不会被表单挡住无法互动(默认是 Modal,工作表会被锁住)。
Modal / Modeless 怎么选
| 打开方式 | 工作表能否同时操作 | 适合场景 |
|---|---|---|
UserForm1.Show(默认 Modal) | 不能,表单没关闭前工作表被锁住 | 需要使用者先填完/确认表单再继续 |
UserForm1.Show vbModeless | 可以,表单和工作表可以同时互动 | 表单要边看工作表边操作,例如本篇批量填充文本框 |
批量填充文本框
Private Sub CommandButton1_Click()
Dim i As Integer
For i = 1 To 10
Controls("TextBox" & i).Value = Cells(i + 1, 1).Value
Next i
End Sub
逻辑说明
Controls("TextBox" & i):用字符串拼接的方式,动态组出 "TextBox1"、"TextBox2"……"TextBox10" 这些控件名称,逐一引用- 只要控件命名有规律(数字编号连续),就能用一个循环处理十个控件,不用写十行几乎一样的代码
[截图:以 vbModeless 打开的表单同时停留在画面上,10 个文本框已经被工作表数据批量填满,背后的工作表仍然可以点击操作]
学完你会
- ✅ 用字符串拼接
"TextBox" & i动态组出控件名称,批量引用 - ✅ 分辨 Modal 和
vbModeless打开方式的差异 - ✅ 知道这个方法要求控件命名有规律(连续编号),命名不规律就用不了
常见错误
- 控件命名没有规律(比如中间跳号或用了不同前缀),字符串拼接组不出正确的控件名称,引用失败
- 忘记加
vbModeless,表单打开后没办法同时操作工作表 - 循环次数(本例是 10)跟实际控件数量对不上,多出或少了要处理的文本框
Sources
Blog / Website: