【VBAプログラミング】Option Explicit


よくモジュールの先頭に記述されている「Option Explicit」とは。

Microsoft公式では以下の様に紹介されています。


構文

Option Explicit { On | Off }

指定項目

On
省略可能です。 Option Explicit チェックを有効にします。 On または Off を指定しない場合は、既定で On になります。
Off
省略可能です。 Option Explicit チェックを無効にします。

解説

ファイル内に Option Explicit On または Option Explicit を記述したときは、すべての変数を Dim ステートメントまたは ReDim ステートメントで明示的に宣言する必要があります。 宣言されていない変数名を使用すると、コンパイル時にエラーが発生します。 Option Explicit Off ステートメントを使用すると、変数を暗黙的に宣言できます。

Option Explicit ステートメントを使用する場合は、ファイル内の他のどのソース コード ステートメントよりも前に記述する必要があります。


Option Explicitと記述すれば自動的に「Option Explicit On」になって、使用する変数は宣言しないと使えませんよってことですね。

さすがにこのページを見ていて「変数?宣言ってなに?」って人はいないと思いますが・・・

Dim sName As String

って記述するやつですね。

とりあえずOption Explicitを記述した場合としない場合でどうなるかを見てみましょう。

■Option Explicitを記述する場合

「buf」という変数を宣言していないので、エラーとなります。

■Option Explicitを記述しない場合

コード自体は同じですが、エラー無く処理が行われました。

「おっ!わざわざ宣言する手間が省けて便利じゃん!」
って思いましたか?では次の様なコードを見て下さい。

Sub test()
    sName = “Taro”
    MsgBox sNane
End Sub

sName変数に格納した「Taro」という文字列をメッセージボックスで表示しようとしています。

ですが実行してみるとメッセージボックスに何も表示されません。はい、Msgboxの引数に「sNane」という全く別の変数が指定されたためです。

コードの打ち間違いは誰にでも起こります。変数名が短い時などは入力支援機能を使わずに手入力する人も多いでしょう。そういった誤入力の際、「デバッグ ⇒ プロジェクトのコンパイル」でも検知できないため、出力結果で判断するしかありません。

コードが長ければ長いほどどこが間違っているのかが分かり辛くなりますし、テストで偶然正しい値が出てしまった時はコードミスに気付かないまま納品してしまう可能性もあります。

ミスを防ぐにも必ず「Option Explicit」は記述する様にしましょう。

ちなみに、モジュール作成時に自動的にOption Explicitを記述してくれる機能も存在します。

オプションの設定から、赤枠内の「変数の宣言を強制する」にチェックを入れることで設定可能です。

関連記事と広告

シェアする

  • このエントリーをはてなブックマークに追加

フォローする