なるべく発生してほしくない「エラー」。しかしそのエラーは、実は成長のチャンスかもしません。
書籍の中から有用な技術情報をピックアップして紹介する本シリーズ。今回は、秀和システム発行の書籍『ExcelVBAを実務で使い倒す技術』からの抜粋です。
ご注意:本稿は、著者及び出版社の許可を得て、そのまま転載したものです。このため用字用語の統一ルールなどは@ITのそれとは一致しません。あらかじめご了承ください。
※編集部注:前回記事「タイプミスをゼロにするのは不可能? VBAコーディングを速めるツールとは」はこちら
エラーは、なるべくなら発生して欲しくないものです。
想定外に発生し、そのデバッグ作業も緊急性が高い。解決できるまでは、仕事や周囲に悪影響を与えてしまうというプレッシャーもかかります。そして多くの場合、誰も助けてくれません。自分で書いたコードの責任は、自分でとらなくてはなりません。
しかし、残念ながらどうしても発生します。だから、割り切ってうまく付き合っていくしかないのです。
さて、ここで一旦、発想を転換しましょう。
むしろ、エラーとポジティブに向き合ってみるのです。次のように考えてみてください。
そして、この心持ちのまま、わざとエラーを発生させてみてください。その発生のメカニズムやよくあるパターンなど、相手のことがわかるようになるでしょう。更に、その発生を抑える、または素早く解消するノウハウやテクニックが身に付きます。
デバッグを楽にするための一歩は、敵を知ることなのです。
ではここで、どのようなエラーが発生するかを想像しながら、次のプログラムを実行してみましょう。
きちんとエラーが出ましたか?
「変数の宣言を強制する」設定が完了している場合は、図1のようなエラーメッセージが出現するはずです。
このエラーメッセージは、比較的理解しやすいですね。変数「num」の宣言をしていないことが、その原因となります。
それでは次に、「Option Explicit」をコメントアウトして再度実行してみましょう。変数の宣言を強制さえしなければ、このエラーは出なくなりますからね。実行して、InputBoxに好きな数値を入力してみましょう。
エラーメッセージは出ませんが、図2のように、イミディエイトウィンドウへの出力が0になってしまうという、わかりづらいエラーが生じます。これは後述しますが、「普通にプログラムが実行されてしまうけど、望んでいた結果が出ない」という、論理エラーという種類のものです。
もうお分かりだと思いますが、変数「nu」が原因ですね。
コードがこの短さであれば原因はバレバレですが、何十行もある中からこのバグを見つけるのはなかなか困難です。
変数宣言を強制することの重要さが、よくわかるかと思います。
Copyright © ITmedia, Inc. All Rights Reserved.