前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >类模块应用示例:获取单击的命令按钮名称

类模块应用示例:获取单击的命令按钮名称

作者头像
fanjy
发布2023-10-04 14:16:35
1760
发布2023-10-04 14:16:35
举报
文章被收录于专栏:完美Excel完美Excel

标签:VBA,类模块,用户窗体

本示例演示,当用户单击用户窗体中的命令按钮时,会弹出该命令按钮名称信息。

这个示例来源于ozgrid.com,有兴趣的朋友可以研究。在用户窗体上共有24个命令按钮,如下图1所示。

图1

当单击某个命令按钮时,会依次显示该命名按钮名称和标题信息,如下图2所示。

图2

在VBE中,插入一个类模块,将其重命名为“clsFrmCtls”,输入下面的代码:

代码语言:javascript
复制
Public mName
Public mFrm As Object
Public WithEvents mCommandbutton As MSForms.CommandButton
Private Sub mCommandButton_Click()
 Call mFrm.SelectedChange(mName)
End Sub

或者:

代码语言:javascript
复制
Public mName
Public mFrm As Object
Public Event SelectedChange(objCtr)
Public WithEvents mCommandbutton As MSForms.CommandButton
Private Sub mCommandButton_Click()
 RaiseEvent mFrm.SelectedChange(mName)
End Sub

然后,插入一个用户窗体,添加控件,如上图1所示,在该用户窗体代码模块中,输入下面的代码:

代码语言:javascript
复制
Dim mcolEvents As Collection
Public Sub SelectedChange(objCtr)
 MsgBox objCtr
 MsgBox Me(objCtr).Caption
End Sub
Private Sub UserForm_Initialize()
 Dim cCBEvents As clsFrmCtls
 Dim intCon
 Set mcolEvents = New Collection
 
 For Each intCon In Array(1, 2, 3, 4, 5, 8, 9, 10, 11, 12, 14, 15, 16, 17, 18, 20, 21, 22, 23, 24)
   Set cCBEvents = New clsFrmCtls
   Set cCBEvents.mFrm = Me
   cCBEvents.mName = Me.Controls("CommandButton" & intCon).Name
   Set cCBEvents.mCommandbutton = Me.Controls("CommandButton" & intCon)
   mcolEvents.Add cCBEvents
 Next intCon
End Sub
Private Sub butClose_Click()
 Unload Me
End Sub
Private Sub UserForm_Terminate()
 Set mcolEvents = Nothing
End Sub
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2023-10-02 06:00,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 完美Excel 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档