Microsoft Lab
全部软件
Excel用户窗体(Userform)约 4 分钟

Controls Collection 用名字动态引用控件

重点内容


适用版本

桌面版通用(Excel 365 / 2021 / 2019 等)。


用 vbModeless 打开表单

Private Sub CommandButton1_Click()
  UserForm1.Show vbModeless
End Sub

📌 vbModeless 让表单打开后,工作表本身仍然可以点击操作,不会被表单挡住无法互动(默认是 Modal,工作表会被锁住)。


打开方式工作表能否同时操作适合场景
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:

  1. Controls Collection
只记在你的浏览器里,换设备不会同步。