2016年6月26日日曜日

【VBAコラム】VBAコードを記述した方がいい時としない方がいい時

プログラミングの世界では
ある物を作るとき、全く無の状態から作成されていきます。
そんな時に、何をどう作っていくのか、細かく書かれている説明書のようなものを
仕様書といいます。

大きなソフト開発プロジェクトでは、必ずそういった仕様書がありますが
個人的にExcelのデータ操作を行う場合に記述するVBAでは
そこまで大げさなものもありません。


そもそもどうしてVBAのプログラムまで覚えて、コーディングして、マクロを実行するのでしょう。

と、同時に現在VBAの勉強に行き詰っている人がいたとすると、
行き着く答えの出口は意外と同じなんてこともあります。

つまり、目的です。

どういう動作をエクセルにさせたいか。

VBAのプログラミングを行うときに
一番重要な箇所、それが仕様です。


表題の件に関してですが
VBAのコードを記述した方がいい時と、記述しない方がいい時
こればかりは、ギブアンドテイクの天秤で測るしかないのですが
A1からA10までに数値が入っていて、その合計をA11に表示させるのであれば
VBAでコードを記述するよりA11のセルに=SUM(A1:A10)と関数を入れてしまった方が
早いわけなんです。

では、こんな内容はどうでしょう。

A1からA10までのセルに1~100まででランダムの数値が入っていたとします。
A11には合計を入力し、B1~B10の間でそのランダムの数値が
1~50までは黒い文字、51~100までであれば赤い文字にする。
なお、ブック内に同様のシートが5000シート分あります。
そうなれば、手作業で行うより、VBAを記述した方が早いでしょう。

手で動かして動作させても、VBAコードを記述して
処理を自動化させても、結果は同じことですが
どのように進めていくかが仕様になります。


なにもVBAは作業の効率化だけではありません。
確かに、膨大なデータをボタン1クリックで
あっという間に処理を行ってくれるという機能は
誰しもご存知かと思います。

しかし、その裏で作業を行うのはコンピューターであり
仕様さえ間違いがなければ
決定的なエラーが1つなくなります。
それがヒューマンエラーです。

どんなに頑張っても、
ミスの少ない人はいても、ミスを絶対にしない完璧な人はいません。
ヒューマンエラーは人間が引き起こす
仕様書の欠落です。

単純作業ほど回数を重ねれば
人間は精度を落とし、いつかエラーを起こします。
しかし、コンピューターはそういったことは絶対にしません。

私が、仕事中で悩む最初の分岐は
自分で処理を行うか、コンピューターに処理を行うかの
選択になります。

簡単にIf文で例えてみます。

-------------------------
If me =>-5 Then
    VBAコード入力を開始
Else
  自分で処理を行う
-------------------------
という文になります。

これは勝手な印象値になりますが
僅かに処理結果にマイナスが発生したとしても
大幅なマイナスにならないようであれば、
VBAでコーディングして処理を実行させるようにします。

もう少し、具体的にいうと
手作業の場合は3時間かかる、
VBA入力の場合はコーディングから実行まで4時間かかるとしたとき
私はVBAのコーディングを選択するようにしてます。

理由は2つあります。
■先述した通り、コンピューターは指示通りの作業をこなすので
記述したコードが間違いなければ処理ミスはありえない。
■手作業で行った処理で処理ミスが発生した場合
最悪もう一度最初からやり直す必要があり、結果倍の6時間を要する。

メリットは他にもあります。
VBAに対する知識や発想力は、たくさんのテーマをクリアすればするほど豊富になり、
さらに次への対応の幅が広くなります。
もちろんデメリットもあります。
VBAの仕様コーディングに誤りがあり
予想していた以上にコーディングに時間がかかってしまうこともあります。

ただし、ここでのデメリットはメリットの経験を重ねれば重ねるほど
どんどん小さくなってきます。

やはり、やるに越したことはないわけです。
少々のロスは承知の上で、果敢にVBAコーディングに挑んだ方が
返ってくるメリットは大きいといえるでしょう。



0 件のコメント:

コメントを投稿