如何获取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
相关产品推荐
相关产品推荐

