派遣事務員の迷走

派遣事務員コロ子。会社の犬。顔出しNG。常に迷走している。

VBA プロのコードに脱帽

こんにちは。
派犬事務員のコロ子です。

ある行政提出用の書類をダウンロードしたらマクロが入っていた。
どんなマクロが組まれているんだろ?と思いながらなんとなくVBEエディタを開いてみたら、なんとパスワードがかかっていなくてエディタ開けちゃった!
えっ!本当に!?と驚きつつも、やったー、ラッキーとコードを見てさらに驚いた。

f:id:SNegishi:20210601210602p:plain

「えっーーーー!!!」
こんなコードの書き方あり!?
シートの数が20枚なので、シート名とセルが違うだけの同じコードが20回並んでいる。
見た瞬間、「普通、セルとシート名を引数にして、プリント部分を別プロシージャにするでしょ!なにこのダッサいコード。誰が作ったの??」と心の中で叫んでしばらく固まった。ど素人が作ったのか?市の職員とかでVBAちょっとできるんですよ~、みたいな人が作ったのか?と最初本気でそう思った。
でも、良く考えてみたら、世間に配布するようなものを素人が作るはずはない。きっとどこかに委託して作っているはず。ということは、プロの仕事。
マジか。
たしかに分かりやすい。見た瞬間に何をしているのかすぐに分かる。
また変更にも強い。例えば、あるシートだけ2部プリントするとか印刷設定を変えるなどの変更も容易だ。プリント部分を別プロシージャにしていたら、IF文で判別するか、それ専用の別プロシージャを作成しなければならない。
別プロシージャになっていたら、どうしても「引数なんだっけ?」とちょっと考えなければならない。でもこの場合は全く考えることなく脳の負荷がゼロだ。
作るのだってコピペで簡単だ。例えシート名が変更になったとしても一括置換で対応できる。
なんて優れているんだ!!
まとめられるところをあえてまとめない。
凄い勇気。
素人ほどムダに知っている知識を使いたがって複雑にしてしまうのか!
ど素人はコロ子の方だ。

さらに別のプロシージャでは
f:id:SNegishi:20210601210543p:plain

これも正直、本当に驚いた。
Withでまとめることもなく、ブックやシートをオブジェクト変数に入れることもなく、シートの書式が全て同じなのに別プロシージャにしてループすることもなく、こんな感じで永遠と続いている。
シートの書式の変更なんてザラにある。あるシートだけ書式が変わっても容易に変更できる。ブックをオブジェクト変数に入れたりしていないので、下の方に行っても、この変数なんだっけ?とならない。
さらに凄いのは、コメントが一つもない。だって見れば分かるから。
本当に凄い。凄すぎる。

これがプロの技なのかー!脱帽。
なんか考え方変わった。