幽霊シートが消えてくれない
先日から作成中のクラスモジュールに、シート削除関数を設けている。
その過程で遭遇した現象について、再現方法が分かったので紹介する。
その現象とは「Excelの強制終了」という恐ろしいもの。どこにどのような
影響があるか分からないので、正直、試すこともためらわれる。
手順は、以下のとおり。
1.二つ以上のシートを準備する。
2.マクロで、どちらか片方のシートを削除する。
3.続けて削除シートのプロパティを、そのオブジェクト名を用いて呼び出す。
例えば、こんな感じだ。
Sub Test() Sheet2.Delete Debug.Print Sheet2.Name End Sub
今回も実行してみたところ、やはり強制終了した。そして自動で回復ファイルが
起動したのだが、消えたはずのSheet2が、中途半端に残っている。
上記のとおり、普段のシートモジュールと異なるアイコンになっている。
↓ シート側には存在しない。
しかもこのVBEに於ける表示、何をしても消えてくれない。アクセスもできない。
ちなみにこの現象を再現しようとするとき、まず最初から存在しないシートには
何も出来ない。最初から無いと分かっているので、当然といえば当然か。
オブジェクト名ではなくシート名で指示した場合も、エラーとなるだけで
強制終了することは無い。
どうやら、マクロ開始直後には存在していて、処理の過程で削除されたシートの
シート名等をオブジェクト名で何かしようとすると、今回の現象に繋がるらしい。
しかも、消したつもりが肉体だけ消えて、魂か怨念だけが残った、まるで幽霊の
ようなシートだけが残ってしまう。あな恐ろしや。
ということで、良い子はマネしないように。
次回、本シリーズ最終回です。
参考まで。