重点内容
适用版本
桌面版通用(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 个文本框已经被工作表数据批量填满,背后的工作表仍然可以点击操作
学完你会
常见错误
- 控件命名没有规律(比如中间跳号或用了不同前缀),字符串拼接组不出正确的控件名称,引用失败
- 忘记加
vbModeless,表单打开后没办法同时操作工作表 - 循环次数(本例是 10)跟实际控件数量对不上,多出或少了要处理的文本框
Sources
Blog / Website: