教えて!ExcelVBA!

ExcelVBAの基礎知識・書き方について紹介します。

【ExcelVBA 基本操作】明示的な変数宣言(Option Explicit)について教えて!

       f:id:m_kbou:20201110161723p:plain

Option Explicitを記述すると「モジュール内のすべての変数について、明示的な宣言をしないと使用できなくなります。」との意味になります。また、この明示により変数のスペルミスを無くし、処理エラーでプログラムが動かなくなる事象を最小限に食い止める事もできます。使い方について説明します。

 

明示的な変数宣言

(1)VBE画面を開きます。
※VBE画面の開き方は、以下リンク手順を参考にして下さい。

【ExcelVBA 基本操作】マクロ/VBAを書く(記述する)ためにはどうすればいいの?教えて! - 教えて!ExcelVBA!

f:id:m_kbou:20201110161741p:plain

(2)以下の内容を記述します。(※今回の例では変数:名前を使用します。)

--------------------------------------------------------

Sub サンプル()

    名前 = "茨城太郎さん"
   
    MsgBox 名前 & " おはようございます。"

End Sub

--------------------------------------------------------

f:id:m_kbou:20201110161753p:plain

Option Explicitを記述しない場合

(3)サンプルモジュール内でクリックし、カーソルを点滅させてから上部の実行ボタン▶をクリックします。

f:id:m_kbou:20201110161806p:plain

(4)”茨城太郎さん おはようございます。”のMsgBoxが表示されます。

f:id:m_kbou:20201110161817p:plain

Option Explicitを記述した場合

(5)(2)で記述したモジュールの上部に「Option Explicit」を記述します。 (※これを追記した事で、以降変数を使用する場合は必ず変数の宣言が必須となります。仮に変数の宣言をしないで処理を実行した場合、警告メッセージが表示されます。)

f:id:m_kbou:20201110161849p:plain

(6)サンプルモジュール内でクリックし、カーソルを点滅させてから上部の実行ボタン▶をクリックします。(※今回はあえて変数の宣言をせずに処理を実行するとどうなるか?を確認してみます。)

f:id:m_kbou:20201110161914p:plain

(7)”変数が定義されていません。”の警告メッセージが表示されました。(※変数の宣言をせずに処理を実行すると、この様な警告メッセージが表示されます。)

f:id:m_kbou:20201110162155p:plain

(8)サンプルモジュールの中に変数の宣言「Dim 名前 As String」をします。(※この変数の宣言をする事で、(7)の警告メッセージは表示されなくなります。)

f:id:m_kbou:20201110161946p:plain

(9)サンプルモジュール内でクリックし、カーソルを点滅させてから上部の実行ボタン▶をクリックします。

f:id:m_kbou:20201110162217p:plain

(10)”茨城太郎さん おはようございます。”のMsgBoxが表示されます。

f:id:m_kbou:20201110161817p:plain

明示的な変数宣言についての説明は以上です。

 

おわりに

Option Explicitの記述については、VBAを紹介しているサイトにより「記述は必須です。」「記述は不要です。」等まちまちの内容で書かれているケースがあります。しかし、上手く使えば動作しない理由(エラー箇所)を容易に見つける手助けにもなるため、このサイトでは使用する事をお勧めしたいと思います。