我有一个工作簿A
(A.xlsm),它通过VBA编辑器中的B
菜单引用工作簿Tools -> References
(B.xlsm)。 A
在B
中使用了多个宏。如果我关闭A
,则B
保持打开状态,所有变量都保持其当前状态。因此,如果我再次打开A
,则B
中的某些宏会出错,因为它们具有以前的咒语中的状态,这与以前的A
不兼容。
有没有办法重置B
以便所有变量现在都处于原始状态?
或者有一种方法可以在B
关闭后关闭A
吗?
答案 0 :(得分:1)
要重置变量,我建议您在引用的工作簿B
中编写一个CleanUp-Sub,并从A
调用它。
关闭B
时关闭工作簿A
需要一种黑客攻击。您不能简单地发出类似close Workbooks("B.xlsx")
的内容,它会抛出错误( 1004 - 工作簿当前被其他工作簿引用... )。
看看David Demner在这里提出的一个技巧:https://stackoverflow.com/a/18132384/7599798。我们的想法是,在引用的工作簿中,会触发关闭例程,但不会立即执行close
。您在工作簿关闭时调用它,但Close
(B
只会在调用工作簿(A
)关闭后执行。