VBAで結局Set Obj = Nothingって必要?不要? いろいろググりましたがよくわかりません。 必要なのか不要なのかハッキリさせてください。

Visual Basic | Excel236閲覧xmlns="http://www.w3.org/2000/svg">500

ベストアンサー

1

1人がナイス!しています

その他の回答(4件)

1

調べたんだから分ると思うけど、場合による。 漫然とSet obj = Nothing しときゃ良いってもんでもないし。 絶対やっとけ、っていう場合。 Dim w As Object Set w = CreateObject("Word.Application") みたいな場合。 なぜか。 インスタンシングの後やファイルを開いた後の処理でエラーや例外が発生してプログラムが修了した場合、Wordのプロセスは残ったまま、ファイルもロックされたままになるので、その後ファイルを使おうとしても開けない。 こういうトラブルを回避するには、エラー処理・例外処理を書いて、その中で Set オブジェクト = Nothing しておく必要がある。 On Error Goto ErrorHandler ... Exit Sub ErrorHandler: Set w = Nothing

1人がナイス!しています

1

Public obj As Range のように、プロシージャ共通で使う変数として宣言したとき、処理の流れによってはNothigしないと変になることもあるでしょう。 また、Newキーワードを使ってインスタンス(オブジェクト)を生成したときは、メモリ解放の意味でも使い終わったらNothingしたほうがいいと思います。というよりNothingを使うのは一つの流儀でしょうか。

1人がナイス!しています

0

どっちもあると思います。 それをしないと、開放されないオブジェクトもあって繰り返し呼ぶと際限なく新しいオブジェクト用のメモリーを使うものもあります。 ただ短いコードや繰り返しが少なければ特に問題にならない事も多いんじゃないかな。 オブジェクトによってはそれが必須のオブジェクトもあったかもです。