仕事でExcel VBAのコードをたんまり書く羽目に陥って……どのくらい経ったのか。まあ、いっぺん頑張ってコードを書いてしまえばあとはワンクリックでめんどくさいあれこれが片付くので、書く甲斐はある。毎回のようにめんどくさいよりも、一度まとめてめんどくさいことを頑張る方がいい。
専門的な知識など持っていないので、マクロを記録して構造をネットで調べるとか、やりたい動作をネットで調べるとかして、適当に当たりをつけて直してテストする。どう直すのかはもう勘でしかない。動きがこうなんだから順番からいってたぶんここ、とか。
そんな適当さでやってきたものだから、制御のしにくいコードはつい避けてしまう。その代表格が「繰り返し処理」というやつで、Do 〜 Loop というコードはできるだけ避けてきた。
どうしても必要になったときは For 〜 Next を使うようにしてきたのだが(こっちの方が制御しやすい気がするので)、今日は遂にそれでは駄目な状況に陥ってしまった。繰り返す条件を For 〜 Next に落とし込めないのだ。ない頭でたくさん考えたけれど解決策は見つからない。
しょうがないので、おっかなびっくりで Do 〜 Loop に挑戦した。For 〜 Next ならば「ここからここまで」と条件の範囲を設定できるので暴走の可能性が低いのだが、Do 〜 Loop は「ここまで」という条件なので、書き間違えたら永遠にプログラムが走り続けてしまう。
手持ちの入門書には解説がなかったので、ネットで調べて何度も文の構成を確認し、もうやるしかないぞ、と諦めてへぼなプログラムを実行してみた。
が、処理完了のメッセージが表示されるだけで肝心の処理がされない。
なんでだ。
何がおかしいのか、と改めてコードを確認して再度試すが結果は同じ。おっかしいな、とじっくり眺めてしばらくしてようやく、条件部分の不等号の向きが違っていることに気がついた。不等号の向きを即座に理解するのが難しい仕様の頭なので、実はこういうことは珍しくない。まったくもう。
それで不等号の向きを直して再び挑戦したところ。
いつまでも処理が終わらない。
……どうやって止めるのか調べておくのわすれた。
焦って苦し紛れにEscキーを叩いたら止まった。
もうイヤ。心臓に悪い。
と、こんな具合に今日の仕事はさんざんだった。暴走したあと意地になって Do 〜 Loop を攻略してなんとかまともに動くようになったけれど、すごく疲れた。ほんと精神的に辛いというか削られるというか。
これにくらべたら、編み物はものすごく簡単なように思えてしまうから不思議だ。
相変わらず靴下のマチの拾い目には目印のマーカーがいくつも必要で、しかも目印をつけているのに拾い目をする前にマーカーの間の目の数を数えているし(そうせずに済むよう目印をつけているはずなのだが)、そもそも未だに手順と目数を書き起こしたノートを読みながらでなければ編めない。
「目と目の間があいているところまで」とか「マーカーの3目手前まで」という指示では不安だから、そこまで編む目数を書き起こしているという有り様。 頻繁に「間違えていないはずなのに動かない」というコードを書くより編み物の方が簡単に思えるけれど、靴下ひとつとってみても編み物も決して簡単ではないというか、難しいような気がする。どっちだいったい。

コメントを投稿
別ページに移動します