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