変数エラーを防ぐOption Explicitとは

基礎から始めるVBAVBA

本シリーズ前回までの記事で、変数について学びました。

今回は変数をエラーなく使うために重要なOption Explicitについて説明します。

前回記事はこちら

変数宣言は必要?

前回学んだ変数を使うための変数宣言ですが、実は必要不可欠というわけではありません。

以下のコードを見てください。


Sub DontDeclareVariables()

    num = 100
    Worksheets(1).Range("A1").Value = num



End Sub

numはこちらで勝手に作った変数ですが、全く変数宣言を行っていません。それでもこのコードを標準モジュールに貼り付けて実行すると、問題なく動いてシート1のA1セルに100が表示されます。

変数宣言をしないのは大問題!

面倒な変数宣言をしなくても変数が使えるなら、便利に思えますよね。

タナイ
タナイ

しかし、変数宣言を行うのにはとても重要な意味があります。

プログラムを入力しているときにスペルミスはつきものです。

以下のプログラムの変なところが分かるでしょうか。


Sub DontDeclareVariables()

    num = 100
    Worksheets(1).Range("A1").Value = nun



End Sub

numとつけたつもりの変数名、3行目でA1に代入するときスペルミスを起こしてnunになってしまっています。

ところが変数の名前は自分が好きなものを付けられますから、変数名を間違えたとしてもVBAのシステムは気が付いてくれません。そのまま実行されてしまい、A1には100ではなく空白が入力されてしまいます。

タナイ
タナイ

今回のような短いコードならミスに気が付きやすいですが、開発が進んだ長いコードではどこでどのようなミスが起きたのか全く分からなくなってしまうこともあります。

このようなミスを防ぐためには変数宣言が絶対必要です。

しかしプログラムを書いているうちにうっかり変数宣言をせずに変数を使ってしまう可能性もないとは言い切れません。

そこで宣言されていない変数を使うと、VBAのシステムがエラーを出すよう変数宣言を強制する必要があるのです。

変数宣言を強制するOption Explicit

変数宣言を強制するのは簡単です。モジュールの先頭に

Option Explicit

と入力すればよいのです。

Option Explicitを記述したうえで変数宣言を行わない以下のコードを実行してみましょう。

Option Explicit

Sub DontDeclareVariables()

    num = 100
    Worksheets(1).Range("A1").Value = num



End Sub

以下のようなエラーが現れ、プログラムは実行されません。

常に変数宣言を強制する

しかし、いつも手動でOption Explicitを入力するのは面倒ですよね。

そこでモジュールを追加するたびに自動的にOption Explicitと入力されるように設定を行いましょう。

VBAメニューの「ツール」→「オプション」を選択します。

オプションダイアログボックスで「変数の宣言を強制する」にチェックを入れてOKをクリックします。

これでモジュールを追加すると自動的にOption Explicitが先頭に入力されるようになりました。

タナイ
タナイ

今回とは直接関係ありませんが、Optionには他に、

  • Option Base 1
  • Option Private Module

などもありますよ。気になったら調べてみてください。

コメント

タイトルとURLをコピーしました