連載
» 2018年02月21日 05時00分 公開

脱初心者! 1歩先を行くExcel VBA開発者のススメ(4):エラーは実は「情報の宝庫」、VBAに生かす方法とは (1/2)

なるべく発生してほしくない「エラー」。しかしそのエラーは、実は成長のチャンスかもしません。

[高橋宣成,著]

連載目次

ExcelVBAを実務で使い倒す技術

書籍の中から有用な技術情報をピックアップして紹介する本シリーズ。今回は、秀和システム発行の書籍『ExcelVBAを実務で使い倒す技術』からの抜粋です。

ご注意:本稿は、著者及び出版社の許可を得て、そのまま転載したものです。このため用字用語の統一ルールなどは@ITのそれとは一致しません。あらかじめご了承ください。


※編集部注:前回記事「タイプミスをゼロにするのは不可能? VBAコーディングを速めるツールとは」はこちら

エラーメッセージは情報の宝庫、エラーは成長の糧

■エラーをわざと発生させて「敵を知る」

 エラーは、なるべくなら発生して欲しくないものです。

 想定外に発生し、そのデバッグ作業も緊急性が高い。解決できるまでは、仕事や周囲に悪影響を与えてしまうというプレッシャーもかかります。そして多くの場合、誰も助けてくれません。自分で書いたコードの責任は、自分でとらなくてはなりません。

 しかし、残念ながらどうしても発生します。だから、割り切ってうまく付き合っていくしかないのです。

 さて、ここで一旦、発想を転換しましょう。

 むしろ、エラーとポジティブに向き合ってみるのです。次のように考えてみてください。

Check!

  • エラーメッセージは、コンピュータからの手紙である
  • エラーは、成長のチャンスをくれるレアキャラである

 そして、この心持ちのまま、わざとエラーを発生させてみてください。その発生のメカニズムやよくあるパターンなど、相手のことがわかるようになるでしょう。更に、その発生を抑える、または素早く解消するノウハウやテクニックが身に付きます。

 デバッグを楽にするための一歩は、敵を知ることなのです。

 ではここで、どのようなエラーが発生するかを想像しながら、次のプログラムを実行してみましょう。

入力された値を二乗するプログラム

 きちんとエラーが出ましたか?

 「変数の宣言を強制する」設定が完了している場合は、図1のようなエラーメッセージが出現するはずです。

図1 コンパイルエラー:変数が定義されていません 図1 コンパイルエラー:変数が定義されていません
変数numが宣言されていないことによるエラーが発生

 このエラーメッセージは、比較的理解しやすいですね。変数「num」の宣言をしていないことが、その原因となります。

 それでは次に、「Option Explicit」をコメントアウトして再度実行してみましょう。変数の宣言を強制さえしなければ、このエラーは出なくなりますからね。実行して、InputBoxに好きな数値を入力してみましょう。

図2 論理エラー:実行結果が0になってしまう 図2 論理エラー:実行結果が0になってしまう

 エラーメッセージは出ませんが、図2のように、イミディエイトウィンドウへの出力が0になってしまうという、わかりづらいエラーが生じます。これは後述しますが、「普通にプログラムが実行されてしまうけど、望んでいた結果が出ない」という、論理エラーという種類のものです。

 もうお分かりだと思いますが、変数「nu」が原因ですね。

 コードがこの短さであれば原因はバレバレですが、何十行もある中からこのバグを見つけるのはなかなか困難です。

 変数宣言を強制することの重要さが、よくわかるかと思います。

       1|2 次のページへ

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。