dynamic更改事件?

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

简介:如何仅使用VBA语言而不是GUI下拉菜单将事件设置为特定的macros。

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

你可以使用类模块,以达到预期的结果? 我将在下面列举一个例子,以说明他们将如何工作。

首先,添加一个类模块(插入类模块),并input以下代码:

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