8

VBA / Excel 2000でガベージコレクションを強制する方法はありますか?

この質問は、Excelのマクロ言語に関するものです。Excelを操作するためにVB.NETを使用していません。したがって、GC.collect()は機能しません

4

3 に答える 3

12

ストレートVBAを使用する場合、.NETFrameworkによって提供されるガベージコレクションを利用することはできません。おそらく、EricLippertによるこの記事が役立つでしょう

于 2009-11-21T13:31:12.040 に答える
7

VBAでGCを強制することはできませんが、グローバル変数を[なし]に設定することをお勧めします。

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 に答える