如何使用VBA将button添加到工作表,并在另一个button按下时指定其单击事件

我正试图自动化一个当地药房的季度患者报告,并在这样做,我已经转移到excel。 自动化的一部分是在报告的封面页上添加患者button,该button用于显示相关信息的表格。 表格上的确定button会根据患者的姓名将信息格式化为新的表格。 该button还将两个新创build的button添加到患者表,一个删除和编辑button。 我可以创buildbutton并放置它们,但我找不到任何方法将button事件分配给button,因为它们被视为每个页面上的新对象。

我已经将button的主代码移动到工作簿本身,所以我真的需要放在button的click事件中是对该方法的调用,但是我找不到通过vba访问新button的单击事件的方法,因为我需要在VBA中调用一个方法,所以我不确定我是否可以使用一个macros(公平的说,我并不是那么熟悉excelmacros,所以如果解决scheme在于它们,我也可以使用它)。

以下是在新工作表上实例化和放置/调整删除button的代码:

Dim btn As OLEObject Set btn = ActiveSheet.OLEObjects.Add(ClassType:="Forms.CommandButton.1", Link:=False, DisplayAsIcon:=False) With btn .Name = "deletePatientButton" .Object.Caption = "Delete Patient" .Top = 5.25 .Left = 290.25 .Width = 75 .Height = 24.75 .PrintObject = False 

结束

下面是放在工作簿代码本身的删除button的主要方法(注意,它只是真的调用另一个validation表单,所以这可能是多余的,但我想把它放在工作簿部分进行testing,因为我认为它会有最大范围):

 Public Sub mainDeleteButton(sheet As Worksheet) Dim confirmer As New deleteConfirmationForm sheet.Activate confirmer.Show End Sub 

最后,这里是我希望能够放置的点击事件的一个例子,或者用另一个解决schemereplace:

 Private Sub deletePatientButton_Click() Call ThisWorkbook.mainDeleteButton(Me) End Sub 

任何帮助都不胜感激!

可以以编程方式将事件代码添加到工作表模块( 请参阅此文章 )。 但是,将button保留在已经具有事件代码的模板工作表中可能更容易。 只需将您的模板复制到新的工作表,重命名它,并添加您的患者数据。