如何使用VBA向工作表添加按钮,并在按下另一个按钮时分配其单击事件

时间:2016-08-08 01:10:07

标签: excel vba excel-vba

我正在尝试为当地药房自动化季度患者报告,并且这样做我已将其转移到excel。自动化的一部分是报告封面上的添加患者按钮,该按钮转到表格以获取相关信息。表单上的“确定”按钮获取信息并将其格式化为根据患者姓名命名的新工作表。该按钮还为患者表添加了两个新创建的按钮,即删除和编辑按钮。我可以创建按钮并放置它们,但我找不到任何方法将按钮事件分配给按钮,因为它们被认为是每个页面上的新对象。

我已将按钮的主要代码移动到工作簿本身,所以我真正需要在按钮的点击事件中调用该方法,但我无法找到任何方式来访问新按钮'通过vba点击事件,因为我需要在VBA中调用一个方法,我不确定我是否也可以使用宏(公平的说明,我不熟悉excel宏,所以如果解决方案在于他们,我也可以使用它。)

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

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

结束

这是放在工作簿代码中的删除按钮的主要方法(注意它只是真正调用另一个验证表单,所以这可能是多余的,但我想把它放在工作簿部分进行测试,因为我假设它会有最大的范围):

Public Sub mainDeleteButton(sheet As Worksheet)

    Dim confirmer As New deleteConfirmationForm
    sheet.Activate
    confirmer.Show

End Sub

最后,这是一个我希望能够放置或替换为其他解决方案的点击事件的示例:

Private Sub deletePatientButton_Click()

    Call ThisWorkbook.mainDeleteButton(Me)

End Sub

任何帮助都非常感谢!

1 个答案:

答案 0 :(得分:1)

可以以编程方式将事件代码添加到工作表模块(see this post)。但是,将按钮保留在已包含事件代码的模板工作表上可能更容易。只需将模板复制到新工作表,重命名,然后添加患者数据。