Access VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


3603 / 9994 ←次へ | 前へ→

【9650】Re:Access VBAの変数について。
回答  hatena  - 07/7/4(水) 0:00 -

引用なし
パスワード
   >Dim strVar As String
>
>っと変数が宣言されていたとします。
>
>この変数に使われたメモリーは、その変数を使う処理が行われた後に、自動で開放されるのでしょうか?

自動で解放されます。しかし、
厳密には「処理が行われた後」ではなく、変数の有効期間が終わったときです。
例えば、Function内で宣言すれば、そのFunctionが終了するとき解放されます。
フォームモジュールで宣言すれば、フォームを閉じるときに解放されます。
標準モジュールでPublic宣言するとAccess自体を閉じるまで解放されません。
詳細はヘルプで、「変数の有効期間の概要」のトピックを検索してみてください。

>色々なHPを見て、参考にしながら、改修を行っているのですが、多くのHPが、
>
>Set strVar = Nothing
>
>と、その変数が使われる処理が抜ける際に書かれ、メモリを開放しているようなのです。

これは、オブジェクト変数の場合ですね。
最初に例示されたString型などの通常の変数ではそのような
記述はできません。

オブジェクト変数の場合も有効期間が終わると自動で解放されます。
ですので通常は必要のない記述です。
たまにしているのを見かけますが、それは念のため、とか、気分的な
要素が多いように思います。
一つの使い道としては、
オブジェクト変数を標準モジュールでパブリック宣言して、共有して
使おうとするときに、使い終わったら
Set objVar = Nothing
と明示的に解放して、他の場所で使うときに、そのオブジェクトが
有効かどうか、
If objVar = Nothing Then
と判断するということはあるかと思います。

1,115 hits

【9646】Access VBAの変数について。 ジバク 07/7/3(火) 22:40 質問[未読]
【9650】Re:Access VBAの変数について。 hatena 07/7/4(水) 0:00 回答[未読]
【9651】Re:Access VBAの変数について。 ジバク 07/7/4(水) 2:38 お礼[未読]
【9652】Re:Access VBAの変数について。 小僧 07/7/4(水) 11:22 発言[未読]
【9663】Re:Access VBAの変数について。 ジバク 07/7/6(金) 2:14 お礼[未読]

3603 / 9994 ←次へ | 前へ→
ページ:  ┃  記事番号:
1078201
(SS)C-BOARD v3.8 is Free