VBAコード作成には[Option Explicit]を必ず設定しよう

2022年2月3日

この[Option Explicit]が書かれているモジュールでは

変数を使用する場合は
その変数を必ず宣言しなければならない

という一種、縛りのようなモノ付加する事が出来ます。

VBA_Option Explicit_1
この宣言は、「Sub」 の上に来ます

[Option Explicit]が書かれているのに、変数を宣言していないと、下記のようにVBAの処理を停止されてしまいます。
 

VBA_Option Explicit_2


では、
[Option Explicit]が書かれていないとどうなるか?…
 

VBA_Option Explicit_3
変数が宣言されていなくてもコードは実行されます。

そうです、
たとえ変数が宣言されていなくても実行されてしまいます。
「それなら書かない方が便利」
なようにも思えてしまいますが、
実はそうでもありません。
 

広告

[Option Explicit]は必ず書きましょう!

Sub 練習()

Dim EndLine1 As Long
Dim A, B, C, D, E As String

EndLine1 = 5
 A = EndLine1
 B = EndLine1
 C = EndLinel
 D = EndLine1
 E = EndLine1

MsgBox A + B + C + D + E
  
End Sub

もしも、[Option Explicit]を設定せずに、
上のようなコードを実行した場合はどうでしょう。

5が格納されている「EndLine1」が5個有るのだから、
25」が表示されるだろうと、

予想がたちますが、
 

VBA_Option Explicit_7
5が5つあってすべて合計されるのだから「25」が表示されないといけないのに、、、どこかがオカシイ・・・でも一目ではわからない状態になってしまうのでは?

実際表示されたのは「20」・・・あれ?

一見どこも間違っていなさそうですが、
パッと見ても分かりづらいのではないでしょうか?

では[Option Explicit]を設定して再度コードを実行すると…

VBA_Option Explicit_8
3つ目の「EndLine1」が英字の小文字「l」になっていました。

と、言った具合に間違えを指摘してくれます。

これはまだまだVBAコードが短く単純なので良いですが、
長く複雑なコードになってくると、どこが間違えなのか?
むしろ間違っている事に気が付かない可能性が高く、
せっかく書いたコードなのに使えない、間違った結果が出てしまうコード
になっている事さえありますから、是非設定しておく事をオススメいたします。
 

[Option Explicit]を自動で設定する

VBA_Option Explicit_4
VBA_Option Explicit_5
赤枠の『変数の宣言を強制する』をクリックしてチェックを付けてください
VBA_Option Explicit_6
自動で [Option Explicit] が付加されています

上の画像のようにすれば、モジュールを挿入した最初の段階で、自動で[Option Explicit]を付加してくれます。
念のため、文字でも記すと以下の手順で設定してください。

1.[ツール]タブ → [オプション]を選択
2.表示されたリストの
  [編集]タブ → 【変数の宣言を強制する】にチェック→OK

以上になります。

広告