2023年1月19日木曜日

これまで快調に動いていたexcel vbaのコードが突然、コケる(ABEND:ABnormalENDつまり、異常終了)ようになった。その原因を突き止めるまでのお話である。

 結論を先に言うと、原因は、ファイルの有無を調べるための1回目のdir(パス¥ファイル)がNullにもかかわらず、無謀に2回目のdir()を出していたため。
 だから、修正方法は、1回目のdirがNullの場合、2回目のdirは出さないようにしただけ。
 ワタシのvbaコードは、名前に日付があるファイル名の最大のものを探すと言う関数(FUNCTION)だった。1回目のdirがNullの場合、該当ファイルなしで復帰(exit)するべきところ、あるはずもない最大のもを求め、2回目のdirを出してしまった。この2回目のdirがコケていた訳だ。要するに、該当するファイルが一つもないケースを考慮していなかったのが敗因である。無謀な2回目のdirを出してしまっていた。
 EXCELが突然、コケたののに、このバグをいかに攻略したか?
 デバッグのコツは、自分のコードをじっくりと眺めることである。
ググっても自分のケースにフィットしたトラブル事例がない場合、もう自分のコードに向き合うしかない。
 そして、あるとき、フッと閃く。そう信じて、コードを眺めるしかない。