幽霊シートが消えてくれない

先日から作成中のクラスモジュールに、シート削除関数を設けている。
その過程で遭遇した現象について、再現方法が分かったので紹介する。
f:id:Infoment:20210915230452p:plain
その現象とは「Excelの強制終了」という恐ろしいもの。どこにどのような
影響があるか分からないので、正直、試すこともためらわれる。

手順は、以下のとおり。
1.二つ以上のシートを準備する。
f:id:Infoment:20210915230801p:plain

2.マクロで、どちらか片方のシートを削除する。

3.続けて削除シートのプロパティを、そのオブジェクト名を用いて呼び出す。

例えば、こんな感じだ。

Sub Test()

    Sheet2.Delete
    Debug.Print Sheet2.Name

End Sub

今回も実行してみたところ、やはり強制終了した。そして自動で回復ファイルが
起動したのだが、消えたはずのSheet2が、中途半端に残っている。
f:id:Infoment:20210915231241p:plain

上記のとおり、普段のシートモジュールと異なるアイコンになっている。
↓ シート側には存在しない。
f:id:Infoment:20210915231325p:plain

しかもこのVBEに於ける表示、何をしても消えてくれない。アクセスもできない。

ちなみにこの現象を再現しようとするとき、まず最初から存在しないシートには
何も出来ない。最初から無いと分かっているので、当然といえば当然か。
f:id:Infoment:20210915233819p:plain

オブジェクト名ではなくシート名で指示した場合も、エラーとなるだけで
強制終了することは無い。
f:id:Infoment:20210915232741p:plain

どうやら、マクロ開始直後には存在していて、処理の過程で削除されたシートの
シート名等をオブジェクト名で何かしようとすると、今回の現象に繋がるらしい。

しかも、消したつもりが肉体だけ消えて、魂か怨念だけが残った、まるで幽霊の
ようなシートだけが残ってしまう。あな恐ろしや。

ということで、良い子はマネしないように。
次回、本シリーズ最終回です。

参考まで。