|
▼ジバク さん、hatenaさん
おはようございます。
変数の有効期間については hatena さんのご提示の通りですが、
Public 変数に関して、一部例外があるので補足です。
MSサポートオンラインより
[VBA] Public 宣言された変数の有効期間
h tp://support.microsoft.com/kb/408871/ja
(こちらの掲示板は直リンクが禁止ですので、補完してください。)
そちらのサイトにも
> Public 変数がアプリケーション終了時まで有効であることを期待する
> VBA マクロの実装は、推奨されません。
とありますが、変数の有効期間は小さく取るのが一般的です。
興味がおありでしたら Google等の検索エンジンで「VB」「スコープ」
をキーワードに検索されてみて下さい。
さて、本題の Set XX = Nothing なのですが、
宣言する、しないに関わらずメモリが解放される事がほとんどですので
(一部例外もありますが)
宣言する意味がない場合が殆んどです。
ただ当方が1プログラマとして思うのは
「時が経てば自動でしまる」という扉を、
開けっ放しで去っていくというのはどうかと思います。(笑)
それが仕様なんだからそのままで良い、
という考え方を否定するつもりはありませんが、
日頃から
・自分が Open したオブジェクトは自分で Close する
・自分が呼び出したオブジェクトは自分で解放する
癖をつけておく事が、他トラブル防止につながるのではないでしょうか。
処理によっては
1.オブジェクトをセットする
2.オブジェクトを Open する
3.何らかの処理
4.オブジェクトを Close する
5.オブジェクトを破棄(Set XX = Nothing)する
という一連の流れの中で、
4、5の動作を行わなかったり、
5の順序を間違ったりして
ファイルそのものを壊してしまう事があります。
Set XX = Nothing をしなかったからだ、とは言えませんが
日頃から変数の宣言や挙動に気をつけてれば
回避する事ができるのではないか、と思います。
長くなりましたが、ご参考までに。
|
|