VBAでOption Explicitを書くべきか?

概要

VBAではOption Explicitステートメントをモジュールの先頭に書くことにより
プログラムを実行する前に、すべての変数が宣言されていることをVBAが確認してくれます。
これにより、変数名の入力ミスを防ぐことができます。

下記のようなコードがあります。

1Public Sub PrintValue()
2
3  Value1 = 1
4  Value2 = 2
5
6  MsgBox Value1 + Valu2
7
8End Sub
  1. 変数Value1に1を代入
  2. 変数Value2に2を代入
  3. メッセージボックスにValue1とValue2を足した値を表示する。

短めのコードですが、コードを実行すると変数の名前「Value2」を「Valu2」と誤って入力しているため、
Value1とValue2を足した3ではなく、Value1の値の1だけが表示されています。

Value1とValue2を足した3ではなく、Value1の値の1だけが表示

 

Option Explicitを先頭に書いてValue1とValue2を宣言してからコードを実行します。

 1Option Explicit
 2Public Sub PrintValue()
 3
 4  Dim Value1 As Long
 5  Dim Value2 As Long
 6
 7  Value1 = 1
 8  Value2 = 2
 9
10  MsgBox Value1 + Valu2
11
12End Sub

「コンパイルエラー: 変数が定義されていません。」と警告が表示されます。
Option Explicitステートメントにより、変数が明示的に宣言されているか確認しているためです。

エラーが発生している場所も表示されます。

短いコードであれば変数名の入力ミスにすぐに気が付きますが、長いコードを書くのであれば
Option Explicitは必ず書きましょう。

関連ページ