如何在运行时使用 VBA 将按钮添加到 MS Access 表单并将代码添加到 _Click() 事件

Posted

技术标签:

【中文标题】如何在运行时使用 VBA 将按钮添加到 MS Access 表单并将代码添加到 _Click() 事件【英文标题】:How do I add buttons to an MS Access form at run time with VBA and add code to the _Click() event 【发布时间】:2015-03-16 14:49:18 【问题描述】:

我需要在 Access 运行时向表单添加按钮。单击每个按钮时,将需要打开一个模式表单,其中包含基于单击的按钮的特定信息。例如,如果我编写一个循环来创建五个按钮并将它们命名为 button1、button2、button3、button4 和 button5;我将如何实现以下目标:

Private Sub button1_Click()
    Msgbox "Button 1 was Clicked"
End Sub

Private Sub button2_Click()
    Msgbox "Button 2 was Clicked"
End Sub

Private Sub button3_Click()
    Msgbox "Button 3 was Clicked"
End Sub

Private Sub button4_Click()
    Msgbox "Button 4 was Clicked"
End Sub

Private Sub button5_Click()
    Msgbox "Button 5 was Clicked"
End Sub

这是我想要实现的简化版本,但这就是它的要点。我是否正确地考虑了这一点?有没有更好的办法?

我正在使用 MS Access 2010。

感谢任何帮助。谢谢

【问题讨论】:

为什么不构建所有按钮和 Click 事件并动态隐藏/显示它们?请参阅控件的Visible property。 【参考方案1】:

以下是如何为当前窗体上名为 cmdDemo 的控件(命令按钮)创建事件过程 (Click())

Dim ctl As Control
Dim mdl As Module
Dim frm As Form

Set ctl = Me![cmdDemo]      'Set a Reference to the Command Button
Set frm = Me                'Set a reference to the Form
Set mdl = Me.Module         'Set a Reference to the Form's Code Module

'Create a Click() Event Procedure for the Command Button cmdDemo
lngReturn = mdl.CreateEventProc("Click", ctl.Name)

'Insert a single Line of Code in the Event Procedure
mdl.InsertLines lngReturn + 1, "Msgbox ""Create Procedure Demo"""

【讨论】:

以上是关于如何在运行时使用 VBA 将按钮添加到 MS Access 表单并将代码添加到 _Click() 事件的主要内容,如果未能解决你的问题,请参考以下文章

MS Access vba 保存按钮错误 3021

如何在ms-access vba中单击命令按钮单击以更改代码以更改控件属性

使用 MS Access VBA 在 .xlsx 文件中插入一行...如何避免损坏文件?

使用 VBA 将文件添加到 MS-Project 任务注释字段

如何将 VBA 迁移到 asp.net

如何禁用 MS Project VBA 中的另存为按钮?