ひさしぶりに、Excelマクロのお話を。
エクセルマクロを動かすプログラミング言語「VBA」をまったく知らない方にはすいません。
Visual Basic Editorのメニューで、[ツール]→[オプション]を選択すると、「オプション」というタイトルのダイアログが出る。
ここで、「編集」というタブの中にある、「変数の宣言を強制する」というチェックは必ず入れるように!ということで、セミナーではお話している。
どうしてして「変数の宣言を強制」しておいたほうがよいかというと。
「変数の宣言を強制」すると、新しくモジュールを追加する度、その先頭に Option Explicit と書かれた行が自動挿入されるようになるのだが。
この「Option Explicit」というのがあることのメリットとして、「意図せぬ打ち間違いを検出してくれる」ということがあるのだ。
例えば、以下のような簡単なプログラムがあったとする。
単価、注文ロット数を入力すれば、税込み金額が出てくるという、非常に簡単なプログラムだ。
‘Option Explicit Sub ConsumptionTax2() Dim intTanka As Integer Dim intLot As Integer Dim curZeikomi As Currency intTanka = 100 intLot = 7 curZeikomi = intTanka * intL0t * 1.05 Debug.Print "税込み価格は" & curZeikomi & "円です" End Sub
「単価」 x 「ロット」 x 1.05 という計算をするだけだ。
ちょっとマクロをかじっていれば、まず間違えようがない。
ところが。
上に紹介したマクロを実行してみると、「税込み価格は0円です」という表示がされる。
本当なら、 100 x 7 x 1.05 ということで、「税込み価格は735円です」と表示されるはずだ。
「え?どうして (@_@;」
ということで、受講生の目が丸くなる。
実は、セミナー2日目の朝に、必ずこのマクロを実行してもらうことにしている。
そして、「さてそれでは、どこがおかしいでしょうか?30秒考えてみてください!」と言って、考えてもらう。
しかし、どこが原因なのか制限時間内に発見できる人は、だいたい2割~3割くらいである。
そこで、今度は、先頭行の「’Option Explicit」を、「Option Explicit」にして、もう一度実行してもらう。
そうすると、原因が一発で分かる。
下から3行目。
実は、打ち間違えで、「intLot」と書いたつもりで、「intL0t」と書いてしまっていたのだ。
(「オー」と「ゼロ」の打ち間違い)
こういう間違いは、なかなか人間の目では検出できない。
実は、それを、自動的に発見してくれるということが、「変数の宣言を強制する」のチェックが入っている状態の強力なメリットのひとつなのである。
セミナーでは、さらにここから話を進めて「検出される問題・検出されない問題」というテーマに移っていき、「問題が起こっても最後まで実行できてしまうプログラム」と、「問題が起こると中断されるプログラム」のどちらが良いですか?という話に流れていく。
セミナーの修了生からセミナー受講直後に来る添削希望のマクロを見ると、ときどき Option Explicit が入っていないものがある。
ほとんどの場合は、一度指摘すると次からはなおっているのだが。
もしも「Excelマクロ達人養成塾」の修了生でまだ「変数の宣言を強制する」の設定をしていない人がいたら、テキスト初級編のP15から、紙面を割いて画像入りで詳細を記載しているので、改めて読み返し、気がついたときにすぐにやっておいて欲しい。