You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取VBA用户窗体控件数组中被点击按钮的属性

解决VBA动态按钮点击获取Caption的问题

嘿,我明白你的问题了——动态创建的按钮能触发点击事件,但第二个MsgBox拿不到按钮的Caption是吧?问题出在类模块里的对象引用上,咱们直接改类模块的代码就行:

修正后的类模块代码

Private Sub CommandButtonEvents_Click()
    MsgBox ("I'm here")
    ' 直接用CommandButtonEvents,它就是当前被点击的按钮对象
    MsgBox ("Button caption is " & CommandButtonEvents.Caption)
End Sub

为什么原来的代码不行?

你之前用的ClickedButton根本没有在类模块里定义过,也没有指向任何按钮对象。而你在用户窗体里通过Set buttonsArray(i).CommandButtonEvents = objButton把动态创建的按钮绑定到了类的CommandButtonEvents变量上,所以在点击事件里,这个变量就代表当前被点击的那个按钮,直接引用它的Caption属性就可以了。

另外要确认你的用户窗体代码里的buttonsArray()是模块级变量(放在UserForm_Initialize外面),这一点你已经做对了——如果把它放在过程内部,数组会在初始化完成后被销毁,按钮的事件就无法触发了。

现在再运行你的代码,点击任意按钮,就能正确弹出对应的Caption啦!

内容的提问来源于stack exchange,提问作者RogZen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 06:48:05