t-hom’s diary

主にVBAネタを扱っているブログ…とも言えなくなってきたこの頃。

Office TANAKA 田中亨さんの名言を勝手に補足

※本人の意図を代弁するものではありません。

Office TANAKAの田中亨さんが代表理事を務める実践ワークシート協会のサイト(http://www.pwa.or.jp/)に以下のようなキャッチコピーがある。

マクロの速度なんて二の次。
裏技を使ってマクロを1分速くした。それを引き継いだ後任者は、コードの意味が分からず業務が一週間止まった。そのマクロは遅い。

さすが田中先生。名言である。
しかし、あくまでこれはキャッチコピーであって、前提条件などの情報が無いので、これだけ見て分かったような気になるのは危険である。
以下、自分の主観で勝手に補足させていただいた。

さて、業務が一週間止まったという結果を見れば、確かにそのマクロは遅い。ただし、裏技を使ったことが原因だと決めつけるのは早計だと思う。
自分しか分からないようなトリッキーなコードには、その意図をコメントで明記しておくべきであり、それを怠ったことが真の原因ではないだろうか。

コードを見れば一目瞭然ということをわざわざコメントで書いてあるソースを見ることがあるが、コメントは本来、それは何をするコードで、なぜそう書いたのかといった意図を補足するものである。また裏技的なコードであれば参考となるURLを補足しても良い。
そうした点に気を使えるならば、裏技的なコードでスピードアップを図ることは必ずしも悪ではないと思う。

私が言いたいのは、積極的に裏技を使えということではなくて、何分中の1分を削減したのか、そのマクロがどの程度の頻度で使われるのかによっても、一概に裏技が悪だと決めつけるわけにはいかないということ。

毎日、何度も使うようなマクロであれば、1分といえど馬鹿にならない。
1件あたり2分かかるマクロを1分に短縮すれば、500件のデータでは8時間も早くなる。
また、データ件数が1日30件しかなかったとしても、1分の待ち時間というのは結構なストレスになる場合がある。

もちろん、その逆のことも言える。1日1回しか実行しないようなマクロをたかだか1分短縮するためにコードを煩雑にするくらいなら、素直なコードを書いた方が良い。この場合は前述の名言を心にとめて、大いに反省したいところである。

ScreenUpdateをOffにしてムッツリ黙ったままのExcelを待つよりも、パタパタ動いているところを見せるほうが利用者のストレスが減る場合もある。体感速度と実際の速度が必ずしも一致しないように、スピードアップが必ずしも良いこととは限らないのだ。

こうしたことも考えて、コードはバランス良く選択したいと思った次第である。

当ブログは、amazon.co.jpを宣伝しリンクすることによってサイトが紹介料を獲得できる手段を提供することを目的に設定されたアフィリエイト宣伝プログラムである、 Amazonアソシエイト・プログラムの参加者です。