VBAは単なる業務効率化ツールにあらず。
熟練してくると、以下のような意外な効果が得られる。
- 整理整頓の意識が育つ
- 交渉力が身に付く
ひとつずつ見ていこう
整理整頓の意識が育つ
VBAを覚えたてのひよっこのときは、コードがぐちゃぐちゃである。
ある程度のレベルまでは、ぐちゃぐちゃのスパゲティーコードでも通用する。
ところが数カ月、数年たってから
マクロが動かない!
という場面に必ずぶち当たる。
そこで久しぶりに自分が作ったマクロのコードを見てこう思うのだ。
NiceToMeetYou!(はじめまして!)
数カ月後に作ったコードなんて、全く思い出せないのである。
とくに初心者の頃は、
動けばいいや
という考えでテキトーなコードを書きがちである。
そうして出来上がったスパゲティコードは、バグを産み出し、未来の自分を混乱させる問題児となるのだ。(と同時にVBAを覚えるための大事な考えでもある)
スパゲティコードを紐解いている初期の段階は
あれ?これ1から作った方が早くね?
と考えてバグの修正を放棄し、また1からマクロを組むというムダな作業が発生する。
何度もスパゲティコードに混乱させられていると、いずれはこう思う。
バグを産まないコードを書けば良いんじゃね?
バグを産まないコードとはすなわち、整理整頓されているコードである。
初心者の頃のスパゲティコードは、どこになにがあるかさっぱり分からない。
変数名が意味不明だったり、全てVariant型だったり、(というか大半は型の宣言をしていない)マトリョーシカのようにIf分が入れ子になっていたりする。
これらを整理整頓するために、ユーザー定義関数でまとまった処理を整理したり、変数の型をかならず指定したり工夫をしていく。
そしてこの思考は、Excel以外の業務にも波及する。
机の上が、カバンの中が綺麗じゃないと気になってしまうのだ。
決められた道具が、あるべき場所に無いと無駄が生じる感覚になる。これによって道具を探す手間が省け、さらなる好循環を産んでいく。これがVBAの一つ目の副次効果である。
交渉力が身に付く
VBAと交渉力って何が関係あるんだ?
そう思われる方もいるかもしれない
私が言う交渉とは、社内の人間に対する交渉力を指す。
VBAを学んだ人ならピンとくると思うが、
VBAは社内から嫌われる、もしくは導入に反対する勢力が必ず現れる。
VBAを使えば業務効率化することは間違いが無いのに、なぜか導入を反対されるのだ。
この人達を説得することは非常に困難である。
なぜなら、反対していることに理由が無いことがほとんどだから
属人化するのを嫌がるとか、そういった理由もあるかもしれない。
しかし、たいていは
今までやったことないから
という、理由になっていない理由で反対してくる。
もはや理屈で説得するのは不可能。
私も、手作業で一週間かかっていた作業をワンクリックで終わらせるマクロを組んだ時、大絶賛されるものと思っていた。
意気揚々と先輩にマクロを見せたところ、
中途半端に自動化してもミスが増えるだけだよ
と、ありがたい言葉をいただいた。
マクロを組むのに苦労をしたのに、導入のために説得が必要なことにこのとき初めて気づいた。
なんやかんやでマクロは導入してくれることになったのだが、それまでの道のりは非常に大変であった。
理屈になっていない理屈で反対をしてくる人を説得する技術は非常に役に立っている。
人を説得するには正論ではなく、タイミングなども必要であることを学べる。