朝からExcelのマクロを動かしていた。いつものようにボタンを押せば、表を整えて、集計して、最後にグラフを出してくれるはずだったのに、今日は途中で止まった。エラーの内容はよくわからない。画面の中央で、処理中を示す丸だけが回り続けている。

最初は単純に動作が重いだけだと思った。けれど、よく見るとウィンドウまで妙な動きをしている。複数の画面が少しずつ位置をずらしながら、同じ方向へ回っている。チューチュートレインのような、あの輪になって回る振り付けを、ウィンドウたちが無言で続けている感じだ。

マクロの中身を開いてみると、関数の中に同じ関数を呼び出している箇所があった。たぶん、そこでループしている。メンバーが増えすぎたグループが、誰も抜けられないまま次のステップへ進み続けている。変数名も似たようなものばかりで、xlsだったかxlsxだったかも自信がない。そもそも、マクロをマグロと読み違えたところから、今日の不調は始まっていたのかもしれない。

いったん処理を止めようとして、停止ボタンを押した。しかし一人だけ止まってくれればいいのに、関係のないシートまで固まった。グラフも、回転のタイミングに巻き込まれたように表示が崩れている。昔のWindowsで見た一般保護違反のような、あの嫌な空気がする。

メンバーを減らせば直るという話を思い出し、使っていない処理をコメントアウトした。最新版のファイル形式や追加された機能も疑って、古い構成に戻してみる。それでも、実行すると画面はまた回り始めた。もうVBAの問題なのか、Excelの問題なのか、私の設計が悪いのかもわからない。

こうなったら、最初の小さな構成に戻すしかない。必要な処理だけを残し、複雑なステップを一つずつ外していく。増え続けるメンバーも、無限に呼ばれる関数も、いったん解散。全員参加の大規模な処理にしないで、できることを一人ずつ確認する。

夕方になって、ようやく原因らしき箇所を見つけた。終了条件を書き忘れていただけだった。たった一行を追加すると、回転していた画面が静かになり、グラフも正常に戻った。停止したのはグループではなく、私の確認作業だったらしい。

次からは、マクロを組む前に処理の終わりを決めておこう。人数を増やせば豪華になるわけでもないし、全員で同じステップを踏めばうまくいくわけでもない。今日はもう、音楽も画面も止めて寝る。