ExcelのVBAを使って作業を自動化する際、ワークブックを変数に割り当てることはよくあります。このとき、変数が不要になったらSetステートメントでNothingを実施しておかないと、次のような"オートメーションエラー"が発生することがあります。
オートメーションエラーは、重いデータ処理や、メモリ不足等が原因にもなるようなので、エラーの一例として示します。
次のように、モジュールレベルの変数でワークブックを割り当て、最後にSetステートメントでNothingを実施していないケースでは注意が必要でした。
このケースでは、1回目の実行は問題なく動作し、2回目でオートメーションエラーが発生しました。原因は、1回目の実行後にオブジェクトへの参照が解除されず、「対象ブック is Nothing」の分岐で意図しない処理となるためです。
なお、プロシージャ内で変数を宣言している場合は、SetステートメントでNothingを実施していなくても、プロシージャの終了とともにオブジェクトへの参照が解除されました。
要は、プロシージャの終了だけでオブジェクトへの参照が解除されるものではないので、必要に応じてSetステートメントでNothingが必要という一例でした。