强制垃圾收集

有没有办法强制在VBA / Excel 2000垃圾收集?

这个问题涉及Excel中的macros语言。 不使用VB .NET来操作Excel。 所以GC.collect()将不起作用

使用直VBA时,您无法利用.NET Framework提供的垃圾回收function。 也许 Eric Lippert的这篇文章会有所帮助

VBA / Excel没有垃圾回收,就像旧的VB一样。 它使用引用计数来代替GC。 当您将指针设置为空(或variables超出范围)时,内存将被释放。 就像在旧的VB中一样,这意味着循环引用永远不会被释放。

你不能在VBA中强制GC,但是把全局variables设置为Nothing是很好的。

kd7提到的文章说在局部variables超出范围之前将Nothing设置为Nothing是没有用的,但是并不谈论全局variables。

在VBA中,模块中定义的全局variables在整个Excel会话中保持活动状态,即直到包含定义它们的VBA模块的文档closures。

所以不要把无用Set O = Nothing当O是本地的时候,但是当它是全局的时候。