【发布时间】:2016-02-09 20:00:08
【问题描述】:
我有一个 Excel 宏,可以创建一个带有事件的新自定义工作簿。该宏还将 .bas 和 .cls 文件复制到新工作簿上,并将链接更改为新工作簿。
创建新工作簿后,包括事件在内的所有内容都可以正常工作。但是当我关闭它并重新打开它时,这些事件不再起作用。我意识到新的工作簿价值已经丢失。由于我在工作表上有一个按钮,我添加了以下内容以尝试重新创建它,但没有运气:
Dim Newbook As New eventWB
Dim thisWB As Workbook
Set Newbook.Workbook = ActiveWorkbook
Set thisWB = Newbook.Workbook
// extra code to gather information
【问题讨论】:
-
你是把事件代码放在新创建的工作簿的工作表模块还是ThisWorkbook模块中?
-
你好 @ScottHoltzman 我在 eventWB.cls 模块中有代码,该模块位于新工作簿中
-
我不是 100% 熟悉类,但是如果代码在类中,如果我在新工作簿中更改
Sheet1上的单元格,例如Worksheet_Change事件如何知道触发模块? -
因为它在类模块中,所以我将工作簿创建为新的 eventWB。所以它不是一本普通的工作簿。每次我对单元格进行更改时,工作簿中都有这个函数,所以只要 application.enableEvents = true 它就会查找它
-
只是为了理解,您已经创建了一个自定义类来捕获所有工作簿事件(甚至可能是您生成的自定义事件)。在您当前的(活动)工作簿中,您使用
Workbooks.Add创建一个新工作簿,然后将您的代码模块/类复制到其中。在新工作簿的工作表上,您有上面列出的代码(创建自定义事件类的对象)。如果关闭所有工作簿,然后打开宏创建的工作簿,事件将不起作用。这是正确的吗?