勉強になったことメモ

「Set a = Nothing」のお話:Excel VBA|即効テクニック|Excel VBAを学ぶならmoug

業務上触ることが多いVBAで、ふとVBAのオブジェクトの破棄タイミングが気になった。

調べてみると上記の記事にあたった。勉強になったので内容をまとめる。

まとめ

'オブジェクト破棄
Set オブジェクト変数 = Nothing
  • オブジェクト変数について、上記のNothingセットは必要派とそうでない派に分かれている。

  • Nothingはオブジェクト変数がどこも参照していないことを表す特別な値。上記のようにNothingをセットすることで、オブジェクト変数と参照先オブジェクトの関係が無効になる。
    ※参照先オブジェクトはメモリから破棄されない。

  • オブジェクトが破棄されるのは、どこからも参照されなくなったとき。また、有効期間が終了したとき。
    プロシージャの場合、”End Sub”がそのタイミング

  • つまり、プロシージャ終了の直前でNothingをセットする必要はほぼない

  • 多くのリソースを1つのプロシージャで利用する場合は、早めにオブジェクト参照を解除すると効率化が図れる

  • また、Nothingをセットすることでオブジェクトを使用しないことが明示できるため、メンテナンス性が向上する

  • オブジェクトが互いのオブジェクトを参照する循環参照の場合、オブジェクトがメモリに残り続けてしまうため、Nothing代入は必須。循環参照を断ち切る必要がある。

このmougってサイト割と充実してそうなのでおぼえておこう。



この記事が気に入ったらサポートをしてみませんか?