VBA(Visual Basic for Applications)を使ってプログラミングをする際、
エラーを未然に防ぐために 「Option Explicit」 を設定することが推奨されています。
しかしながら、VBA初心者の方の中には、「Option Explicitとは何か?」「なぜ使うべきなのか?」と疑問を持つ方も多いことと思います。
本記事では、Option Explicitの基本的な概念、使い方、設定方法、メリット・デメリット について詳しく解説します。
-著者情報-
名前:Utatane
VBA(マクロ)歴:3年
エクセル使用歴:15年以上
ひとこと:初心者だった当時に戻った気持ちになって解説いたします
Option Explicitとは?
Option Explicitとは、VBAにおいて変数の宣言を強制するためのオプションです。
通常、VBAでは変数を宣言しなくても使用できますが、
Option Explicit を有効にすると、宣言していない変数を使用することができなくなります。
- 通常:宣言していない変数も使用可
- Option Explicitを有効にする:宣言していない変数は使用不可

変数を宣言しない方がラクなのに、
なぜ「Option Explicit」が必要なの?

そう思いますよね。
次項で理由を解説いたします。
Option Explicitが必要な理由
「Option Explicit」が必要なのは、予期せぬ結果を防ぐためです。
例えば下記のようなコードを書いたとします。
Sub サンプル()
x = 10 ' 変数を宣言していない/VBAは「x」という変数を作成
y = 20 ' 変数を宣言していない/VBAは「y」という変数を作成
MsgBox x + y
End Sub
まだ「Option Explicit」を有効にしていないため、変数を宣言していなくても動きます。

しかしながら、変数名を「y」ではなく、「w」というように、間違って書いてしまった場合はどうでしょうか。
Sub 間違った例()
x = 10 ' 変数を宣言していない/VBAは「x」という変数を作成
w = 20 ' 変数を宣言していない/間違ったが、VBAは「w」という変数を作成
MsgBox x + y ' yは存在しない変数のためスキップされる
End Sub

4行目で登場した「y」は存在しない変数のため、VBAが認識できずスルーされてしまいます。
今回のようにエラーが出ない場合もあり、気付かずに進めると予期せぬ結果になることがあります。
異変に気付いたとしても、大きなプログラムの場合、原因をつきとめるのに苦労することが多いです。
「Option Explicit」を有効にすることで、これらの不具合を大幅に減らすことができます。
では、「Option Explicit」を有効にする方法を見ていきましょう。
Option Explicitを有効にする方法
「Option Explicit」を有効にするには、モジュールの先頭(プロシージャ外)に「Option Explicit」と記述するだけです。「モジュール、プロシージャとは?」
下記のVBAコードを見てください。
Option Explicit ' Option Explicitを有効にする
Sub 間違った例()
Dim x As Integer ' 変数を宣言
Dim y As Integer ' 変数を宣言
x = 10
w = 20 ' 記述間違い/エラーになる
MsgBox x + y
End Sub
1行目に「Option Explicit」を記述しています。
これでモジュール内のマクロは、宣言していない変数が使えなくなります。
3行目に前項の間違った例をコピーし、変数の宣言を追加しています。
実行してみましょう。

変数「w」が宣言されていないため、エラーが出ました。
これで予期せぬ結果にならずに済みます。
「Option Explicit」は必ずプロシージャ外に記述してください。
プロシージャ内に記述すると、エラーが発生して動きません。

新規モジュールに自動で適用する
モジュールをたくさん作成する場合、毎回「Option Explicit」を記述するのは面倒ですよね…。
そんな場合は、自動で「Option Explicit」を適用することができます。
※モジュールを新規作成する場合に限定されます
1.「VBA Project」上部のメニューから、「ツール」→「オプション」をクリックします。

2.「オプション」画面が開きますので、「変数の宣言を強制する」にチェックを入れてください。

これで以降に新規作成したモジュールには、自動で「Option Explicit」が記述されます。
モジュールを新規作成してみましょう。

「Option Explicit」が記述されたモジュールが作成されました。
Option Explicitのメリット・デメリット
Option Explicitを有効にした場合のメリット・デメリットをまとめてみました。
【Option Explicitを有効にした場合のメリット】
- タイプミス防止:変数名を誤って記述するとエラーが発生し、すぐに気づくことができる
- コードの可読性向上:どの変数が使用されているのか明確になる
- バグの早期発見:未宣言の変数を使用するとエラーが出るため、実行前に問題を発見しやすい
- パフォーマンスの向上:適切なデータ型を指定することで、処理速度が向上する可能性がある
【Option Explicitを有効にした場合のデメリット】
- 記述が増える:すべての変数を宣言する必要があるため、記述が増える
- 試作や一時的な検証がしづらい:仮コードでも宣言が必要なため、面倒になる
正直なところ一長一短です。
大きなプログラムの場合はメリットが大きいため、積極的に活用することをおすすめします。
最後に
VBAのOption Explicitについて解説いたしました。
当ブログでは、VBAマクロやPythonなど、時間を生み出すプログラミング術を公開しております。
この記事がわかりやすいと感じた方は、他の記事も読んでいってください。
最後までお読みいただき、ありがとうございました。がんばってください!