作者:绿色风
分类:
时间:2022-08-17
浏览:545
楼主 xmyjk |
Q:如何运用VBA,动态的在窗体上新增命令按钮,并写入差异化的事件代码?
A:思路: (1)首先控制VBE,在窗体界面上新增控件,在窗体代码窗口中新增事件代码 (2)推出窗体后,删除新增的控件,删除新增的代码。
- Sub AddBouton()
- For p = 1 To 2
- Set vbc = ThisWorkbook.VBProject.VBComponents("Userform1") '控制USERFORM1窗体的VBE界面
- Set NewButton = vbc.Designer.Controls.Add("forms.commandbutton.1") '在窗体内植入一个新命令按钮
- With NewButton '设置新按钮的属性
- .Caption = "增加"
- .Left = 10
- .Height = 18
- .Top = 6 + n
- .Width = 42
- .Font.Size = 10
- End With
- With vbc.codemodule '控制窗体的代码界面,并在最后一行的代码后面增加点击按钮的事件代码
- Line = .CountOfLines
- .insertlines Line + 1, "Private Sub CommandButton" & p & "_Click()"
- .insertlines Line + 2, "msgbox ""点击了CommandButton" & p & """"
- .insertlines Line + 3, "End Sub"
- End With
- n = n + 40
- Next
- VBA.UserForms.Add(vbc.Name).Show '显示窗体
- For p = 1 To 2
- vbc.Designer.Controls.Remove ("CommandButton" & p) '删除先前植入的控件,恢复界面
- With vbc.codemodule '删除之前植入的代码,恢复代码窗口
- Line = .CountOfLines
- .DeleteLines Line
- .DeleteLines Line - 1
- .DeleteLines Line - 2
- End With
- Next
- End Sub
- Private Sub auto_open()
- Call AddBouton
- End Sub
楼下将引申,连窗体都是VBA创建的,退出窗体后系统将自动移除窗体。
该帖已经同步到 xmyjk的微博 增加按钮和事件.rar |
2楼 xmyjk |
引申,如果连窗体都是创建的呢,代码如下:
- Sub AddBouton()
- Set VBC = ThisWorkbook.VBProject.VBComponents.Add(3) '创建窗体
- For p = 1 To 2
- Set NewButton = VBC.Designer.Controls.Add("forms.commandbutton.1") '在窗体内植入一个新命令按钮
- With NewButton '设置新按钮的属性
- .Caption = "增加"
- .Left = 10
- .Height = 18
- .Top = 6 + n
- .Width = 42
- .Font.Size = 10
- End With
- With VBC.codemodule '控制窗体的代码界面,并在最后一行的代码后面增加点击按钮的事件代码
- Line = .CountOfLines
- .insertlines Line + 1, "Private Sub CommandButton" & p & "_Click()"
- .insertlines Line + 2, "msgbox ""点击了CommandButton" & p & """"
- .insertlines Line + 3, "End Sub"
- End With
- n = n + 40
- Next
- VBA.UserForms.Add(VBC.Name).Show '显示窗体
- ThisWorkbook.VBProject.VBComponents.Remove VBC
- End Sub
- Private Sub auto_open()
- Call AddBouton
- 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总版主之一