8

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

这个问题是指 Excel 中的宏语言。不使用 VB .NET 来操作 Excel。所以 GC.collect() 不起作用

4

3 回答 3

12

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

于 2009-11-21T13:31:12.040 回答
7

您不能在 VBA 中强制 GC,但最好将全局变量设置为 Nothing。

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

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

所以不要Set O = Nothing在 O 是本地的时候放无用,而是在它是全局的时候放。

于 2013-07-02T14:00:35.263 回答
3

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

于 2009-11-21T13:49:52.877 回答