动态更改事件?

时间:2015-01-30 16:11:50

标签: excel vba excel-vba

如何以编程方式将事件设置为工作簿。我见过的工作簿上有ThisWorkbook.OnClose =" macronamehere"这非常有用,但我似乎无法在Excel 2013工作簿中复制它。

摘要:如何仅使用VBA语言而不是GUI下拉列表将事件设置为特定的宏。

原因:我希望能够这样做,因为它还将解释我如何在VBA代码中创建工作簿并直接将事件编码到新创建的工作簿以及动态更改我的事件不同的方式。

1 个答案:

答案 0 :(得分:2)

您是否可以使用课程模块以达到预期效果?我将在下面举例说明它们的工作原理。

首先,添加一个类模块(插入 - 类模块),然后输入以下代码:

Private WithEvents xlApp As Application

Private Sub Class_Initialize()
    Set xlApp = Application
End Sub

Private Sub xlApp_WorkbookBeforeClose(ByVal Wb As Workbook, Cancel As Boolean)
    Cancel = True
    MsgBox ("I will remember you!")
End Sub

接下来,我们必须实例化新类,我们可以在标准模块中执行此操作。代码如下(注意,Class1只是类的默认名称,您可以并且应该在类属性菜单中更改):

Private xlAppInstance As Class1

Sub LoadClass()
    Set xlAppInstance = New Class1
End Sub