【ExcelVBA】Option Explicitを設定した方がよい理由。問題となる実例2選

ExcelVBA
記事内に広告が含まれています。

処理の先頭に書かれる「Option Explicit」↓

VBAの入門書などで「Option Explicit」は書かなくてもOK!なんて記事を見たことがありますが、私はこれは絶対書くべきだと思っています。

また、実際の現場でもこれが書いていないことは、今のところ見たことがありません。

英語だし何か苦手だなぁと思うかもしれませんが、丁寧に説明しますので参考にしてください。

Option Explicitとは

「Option Explicit」とは「変数を使いたかったら宣言しないと使えないよ!」という意味です。

モジュールの先頭部分(宣言セクションと言います)に書く必要があり、そのモジュール内では、必ず変数は宣言しないとエラーになります。

変数を宣言するとは、↓の図でいうと「Dim ~」というところです。

この例では、「name」という変数を宣言し、その下の処理で、その宣言した[name]を使っています。

実行してみると・・・

「OK」というメッセージボックスが表示されます。

これを、試しに、「Dim ~」の1行を削除してみます。

この状態で実行すると、どうなるか・・・

はい、エラーになりました。「Option Explicit」と書いているのに、変数を宣言していないからです。

では次は、「Option Explicit」も消してみます。つまり、「Option Explicit」も「変数の宣言」もない状態です。

これで実行してみると・・・

今度はエラーがなく実行できました。

Option Explicitと書くなら、絶対に変数を宣言しないといけないということが、これで分かりました。

Option Explicitの設定

この「Option Explicit」ですが、実は、自動で必ず書いてくれるようになる設定があります。もし、使っているマクロでこの「Option Explicit」が書かれていない場合は、設定してみてください。

まず、VBEのメニューの[ツール][オプション]をクリックします。

オプション画面が表示されるので、[変数の宣言を強制する]にチェックを入れて[OK]です。

これで、処理の先頭に「Option Explicit」が自動で書かれます。

Option Explicitを設定しないと起きてしまう問題

では、本題に。この「Option Explicit」は必要なのか?について。

さっき実験したときは、「Option Explicit」も「変数の宣言」も書かなければ、問題なく実行できましたよね。

じゃーどっちも書かない方が楽じゃないか!!って思うかもしれません。

でもこれ、必ず書くべきだと思うんです。次に紹介する実例2つを見てください。

変数名の間違いに気づきにくい

こんな処理を書いたとします。「Option Explicit」も「変数の宣言」もありません。

実行してみます。

”OK”と表示されるはずが、空のメッセージボックスが表示されてしまいました。

コードをよく見てみると「MsgBox namae」の部分が間違っていますね。正しくは「MsgBox name」です。変数のつづりを間違えてしまったんですね。

これを、ちゃんと「Option Explicit」も「変数の宣言」も書いて実行するとどうでしょうか・・・

エラーが表示され、間違いがあることを教えてくれました。

今回はこんなに短いコードなのですぐ気づくかもですが、これが数百行とかのコードになると、気づくのは難しいですよね。

変数の型が勝手に判断される

次の例です。次も、「Option Explicit」も「変数の宣言」もありません。

実行すると・・・

「1」と表示されました。うん、何もおかしくはなさそうです。

では、「Option Explicit」と「変数の宣言」を追加してみます。変数は数値ではなく「Boolean」にしてみました。

実行してみると・・・

今度は「1」ではなく「True」と表示されました。「数値」ではなく「Boolean」として判断されています。

このように、変数の型を宣言するとしないとでは、全然結果が変わってくることがあるんです。なので、ちゃんとあえて型を宣言した方がいいのです。

まとめ

どうだったでしょうか。

やはり「Option Explicit」は書くべきだと思います。書くことによって「型」を意識しないといけなくなりますが、そこは訓練です!慣れれば大丈夫。慣れましょう。

実際の現場ではほぼ書いてあることが多いです。これがないと保守性も悪くなるので、まずこれは必須だと覚えておいた方がいいです。

サイト運営者
もぐらっとん

シスエムエンジニア歴15年。フリーランスになって2年。家庭と両立するため在宅で仕事をしています。
RPA(Uipath)開発・運用と、ブログ運営(Wordpress)をしています。
※当ブログとは別に、主婦ブログも運営しています
https://syufumesen.com/

もぐらっとんをフォローする
ExcelVBA
シェアする
もぐらっとんをフォローする
もぐらっとんWEB
タイトルとURLをコピーしました