Option Explicitとは何、必要? VBA記述で不注意なエラーを防止する

vbaopexplieyecatch

Option Explicit とは何?
VBAプログラムで使っている変数の明示忘れを防止する=不注意なエラーを防止する=とてもありがたいステートメントです。
しかも自動記述モードもあります。

こんにちは じゅんぱ店長 (@junpa33) です。

今回の話は、エクセルVBAコードの書き出しのところでの最初の疑問についてです。

エクセルVBAに取り組み始めてほぼ全員(?)の人が最初に思う疑問だと思います。

その名は「Option Explicit

引継ぎした社内PCで、初めてビジュアルベーシックエディタ(VBE)を開いた時、いきなりこれが書いてあったという経験の人もいるでしょう。

「何だョ コレは、いきなりどういう意味?」と思ってしまいます。

「オプションの例外(Option Exception)ウンッ? ウン? 」

ねこ氏

PCの起動中で「例外の発生」は非常に嫌な状態 -ブルースクリーン- バイオスがシャットダウンするのかと思ってしまいます。

Option Explicit とは何?VBA記述に必要?

例によって、Google翻訳で調べると「オプション明示」と出ました。これでは意味が分かりません。

何かを「明示しなさい」と言うことでしょうか。

答えを先に言いますが、

VBAプログラムの中で、『変数』を扱う時は、絶対に『変数をこれから使いますよ』と宣言(明示)しなければいけません。

と言うことを言っています。つまり、

 Option Explicit が記述されているのに、変数の宣言をしないと、

vbaoptionexplicit001a

こうなります。

 では最初からOption Explicit を記述していなければ、

vbaoptionexplicit002

問題なくコードが実行されます。

ということです。

Option Explicit が記述されていて、エラーなしで(変数を宣言して)実行するには

vbaoptionexplicit003

コード
Option Explicit

Sub オプションエクスプリシットは嫌いだ()
    Dim a As Long
        a = 110
        Range("B1") = a
End Sub

と記述します。

Option Explicit は必要ないでしょ!

と言うことは、Option Explicit を書かない方が、エラーストップもしないので、こっちの方が良さそうに思います。

それにいちいちアルファベットを打ち込むのも面倒だし。

ねこ氏

うささん

では何故、「Option Explicit は必要ないでしょ」ではなく、「Option Explicit を記述しましょう!必要です!」と推奨するのでしょうか?

ちょっとした例え話ですが、

あなたは、お友達と、お茶をしにお店に立ち寄りました。

あなたは手に持っていたスマホをテーブルに置いたまま、お友達との会話に盛りあがります。

ひとしきり盛り上がった後、お店を出るのですが、テーブルに置いたスマホを、そのまま忘れてしまいそうになりました。

それに気づいた店員さんが、「スマホを忘れていますよ」とあなたに注意を促してくれました。

あなたは、忘れ物をせずに済みました。忘れていたら、また大騒ぎになる所でした。

その店員さんの名前は、Option Explicitさんでした。

何故、Option Explicit を使うのか、それは、コードの中に潜むエラー、バグを防止したり減らしたりするためです。

実際にコードを組み上げていく時には、当たり前のようにして「変数」を複数個は使用することになります。

変数の宣言もせずに、複数個の変数を使用すると、それこそ『テーブルに置き忘れ』で「何用として使った変数か」や「同名の変数」を別目的で使ったりしてしまうでしょう。

変数にまつわるエラー、バグは、記述したプログラムコードを遡ったり、変数に代入された値が適正かどうかをその都度調べに行ったり、

結構、最悪系のエラー修正作業になっていしまいます。

みなさんは少しでもこんな作業をしたくはないので、

必ず、「Option Explicit」を使って、このプログラムで利用している、変数の明示忘れをしないようにしているのです。

Option Explicit は自動記述の初期設定で手間なし

Option Explicit は、モジュールの一番最初に記述しますが、

毎回毎回、記述していかなくても大丈夫です。

モジュールを立ち上げる(挿入する)度にVisual Basic Editorが自動で記述してくれます。

その方法は、Visual Basic Editorのオプション設定をしておくだけの事です。

Visual Basic Editorでツールからオプションへと進みます。

vbaoptionexplicit004

矢印下001

「変数の宣言を強制する」の項目にチェックを入れます。

vbaoptionexplicit005

OKボタンで完了です。

設定は楽勝です。

まとめ Option Explicit はエラー防止に必要です

<「Option Explicit」を書く、書かない どっち?>によって、

<変数を宣言する、宣言しない どっち?>とはならないと思ってください。

変数を宣言しなくて済むからOption Explicitは記述しないという考え方は論外でしょう。

自分でVBAコードを組み立てて行く上で、

「コードエラーを少しでも発生させたくない」から変数を宣言して明示するのは当然で、

その変数の宣言を忘れないように記述することをサポートしてくれるのが、

Option Explicitステートメントだということです。

「コードエラーを少しでも発生させたくない」と考えている人はOption Explicitを記述しましょうということです。

エクセルVBAの独習には動画学習という方法もあります。 目と耳両方を使って学習することでさらに勉強効率を上げることもできます。

エクセルVBAを独習するのに参考書は欠かせません。 参考書選びは自分に合った「相棒」にできるものを選んでいきたいです。

今回の記事はここまでです。   最後までご覧いただき有難うございました。

<記事内容についての告知>VBAコードの記述記事においては、その記述には細心の注意をしたつもりですが、掲載のVBAコードは動作を保証するものではりません。 あくまでVBAの情報の一例として掲載しています。 掲載のVBAコードのご使用は、自己責任でご判断ください。 万一データ破損等の損害が発生しても当方では責任は負いません。

アンケートでポイ活しよう!!

アンケートに答えれば答えるほど ”使える” ポイントがたまります。

NTTコム サーチ

af_banner01

Dstyle web

dstyleweb_logo
dstyle_320x50-min