ExcelTip.Net留存知识帖 ---【注:附件之前被网盘供应商清空后,现已修复-现已修复-现已修复为本地下载!】
现在位置:首页 > E问E答 > Excel VBA > 如何运用VBA,动态的在窗体上新增命令按钮,并写入差异化的事件代码

如何运用VBA,动态的在窗体上新增命令按钮,并写入差异化的事件代码

作者:绿色风 分类: 时间:2022-08-17 浏览:545
楼主
xmyjk
Q:如何运用VBA,动态的在窗体上新增命令按钮,并写入差异化的事件代码?

A:思路:
(1)首先控制VBE,在窗体界面上新增控件,在窗体代码窗口中新增事件代码
(2)推出窗体后,删除新增的控件,删除新增的代码。

  1. Sub AddBouton()
  2.     For p = 1 To 2
  3.         Set vbc = ThisWorkbook.VBProject.VBComponents("Userform1") '控制USERFORM1窗体的VBE界面
  4.         Set NewButton = vbc.Designer.Controls.Add("forms.commandbutton.1") '在窗体内植入一个新命令按钮
  5.         With NewButton '设置新按钮的属性
  6.             .Caption = "增加"
  7.             .Left = 10
  8.             .Height = 18
  9.             .Top = 6 + n
  10.             .Width = 42
  11.             .Font.Size = 10
  12.         End With

  13.         With vbc.codemodule '控制窗体的代码界面,并在最后一行的代码后面增加点击按钮的事件代码
  14.             Line = .CountOfLines
  15.             .insertlines Line + 1, "Private Sub CommandButton" & p & "_Click()"
  16.             .insertlines Line + 2, "msgbox ""点击了CommandButton" & p & """"
  17.             .insertlines Line + 3, "End Sub"
  18.         End With
  19.         n = n + 40
  20.     Next
  21.     VBA.UserForms.Add(vbc.Name).Show '显示窗体
  22.     For p = 1 To 2
  23.         vbc.Designer.Controls.Remove ("CommandButton" & p) '删除先前植入的控件,恢复界面
  24.         With vbc.codemodule '删除之前植入的代码,恢复代码窗口
  25.             Line = .CountOfLines
  26.             .DeleteLines Line
  27.             .DeleteLines Line - 1
  28.             .DeleteLines Line - 2
  29.         End With
  30.     Next
  31. End Sub

  32. Private Sub auto_open()
  33.     Call AddBouton
  34. End Sub
楼下将引申,连窗体都是VBA创建的,退出窗体后系统将自动移除窗体。


该帖已经同步到 xmyjk的微博

增加按钮和事件.rar
2楼
xmyjk
引申,如果连窗体都是创建的呢,代码如下:

  1. Sub AddBouton()
  2.     Set VBC = ThisWorkbook.VBProject.VBComponents.Add(3) '创建窗体
  3.     For p = 1 To 2
  4.         Set NewButton = VBC.Designer.Controls.Add("forms.commandbutton.1") '在窗体内植入一个新命令按钮
  5.         With NewButton '设置新按钮的属性
  6.             .Caption = "增加"
  7.             .Left = 10
  8.             .Height = 18
  9.             .Top = 6 + n
  10.             .Width = 42
  11.             .Font.Size = 10
  12.         End With

  13.         With VBC.codemodule '控制窗体的代码界面,并在最后一行的代码后面增加点击按钮的事件代码
  14.             Line = .CountOfLines
  15.             .insertlines Line + 1, "Private Sub CommandButton" & p & "_Click()"
  16.             .insertlines Line + 2, "msgbox ""点击了CommandButton" & p & """"
  17.             .insertlines Line + 3, "End Sub"
  18.         End With
  19.         n = n + 40
  20.     Next
  21.     VBA.UserForms.Add(VBC.Name).Show '显示窗体
  22.     ThisWorkbook.VBProject.VBComponents.Remove VBC
  23. End Sub

  24. Private Sub auto_open()
  25.     Call AddBouton
  26. End Sub

增加窗体增加按钮和事件.rar
3楼
magicshadow
4楼
水星钓鱼
感谢分享
5楼
zjgzgs
谢谢分享

免责声明

有感于原ExcelTip.Net留存知识的价值及部分知识具有的时间限定性因素, 经与ExcelTip.Net站长Apolloh商议并征得其同意, 现将原属ExcelTip.Net的知识帖采集资料于本站点进行展示, 供有需要的人士查询使用,也慰缅曾经的论坛时代。 所示各个帖子的原作者如对版权有异议, 可与本人沟通提出,或于本站点留言,我们会尽快处理。 在此,感谢ExcelTip.Net站长Apolloh的支持,感谢本站点所有人**绿色风(QQ:79664738)**的支持与奉献,特此鸣谢!
------本人网名**KevinChengCW(QQ:1210618015)**原ExcelTip.Net总版主之一

评论列表
sitemap