【发布时间】:2013-11-27 21:07:27
【问题描述】:
有没有办法在 VBA/Excel 2000 中强制进行垃圾回收?
本题涉及 Excel 中的宏语言。 不使用 VB .NET 来操作 Excel。所以 GC.collect() 不起作用
【问题讨论】:
标签: vba excel excel-2000
有没有办法在 VBA/Excel 2000 中强制进行垃圾回收?
本题涉及 Excel 中的宏语言。 不使用 VB .NET 来操作 Excel。所以 GC.collect() 不起作用
【问题讨论】:
标签: vba excel excel-2000
在使用直接 VBA 时,您无法利用 .NET Framework 提供的垃圾收集。 Perhaps this article Eric Lippert 会有所帮助
【讨论】:
.Dispose() 方法的部分。
您不能在 VBA 中强制 GC,但最好将全局变量设置为 Nothing。
kd7提到的那篇文章说,局部变量在超出范围之前设置为Nothing是没有用的,但没有谈到全局变量。
在 VBA 中,模块中定义的全局变量在整个 Excel 会话中保持活动状态,即直到包含定义它们的 VBA 模块的文档关闭。
所以不要在 O 是本地的时候放无用的Set O = Nothing,而是在它是全局的时候放。
【讨论】:
VBA/Excel 没有垃圾收集,就像旧的 VB。它使用引用计数代替 GC。当您将指针设置为空(或变量超出范围)时,内存将被释放。就像在旧的 VB 中一样,这意味着循环引用永远不会被释放。
【讨论】: