如何重置引用的Workbook变量

时间:2017-10-16 07:45:00

标签: excel-vba excel-2010 vba excel

我有一个工作簿A(A.xlsm),它通过VBA编辑器中的B菜单引用工作簿Tools -> References(B.xlsm)。 AB中使用了多个宏。如果我关闭A,则B保持打开状态,所有变量都保持其当前状态。因此,如果我再次打开A,则B中的某些宏会出错,因为它们具有以前的咒语中的状态,这与以前的A不兼容。

有没有办法重置B以便所有变量现在都处于原始状态? 或者有一种方法可以在B关闭后关闭A吗?

1 个答案:

答案 0 :(得分:1)

要重置变量,我建议您在引用的工作簿B中编写一个CleanUp-Sub,并从A调用它。

关闭B时关闭工作簿A需要一种黑客攻击。您不能简单地发出类似close Workbooks("B.xlsx")的内容,它会抛出错误( 1004 - 工作簿当前被其他工作簿引用... )。

看看David Demner在这里提出的一个技巧:https://stackoverflow.com/a/18132384/7599798。我们的想法是,在引用的工作簿中,会触发关闭例程,但不会立即执行close。您在工作簿关闭时调用它,但CloseB只会在调用工作簿(A)关闭后执行。