こんにちは。ホームスタッフサービスのM田です。
今回もVBAのちょっとしたコツの紹介です。変数を宣言しておくことで、エラー発生時の見直しの無駄な時間が節約できるかも、というお話です。

Option Explicitは絶対に使うべき!

VBAでは変数を宣言せずに使うことができます。

変数を宣言せずに使えるので手軽に試せます。

ちょこっと試したりするときには便利です。しかし変数を宣言しないことで起こる理不尽(と人間が思える)エラーの弊害のほうが私は大きいと思います。Option Explicitはその弊害を回避してくれる安心のおまじないです。

変数名の打ち間違いで無駄な時間を過ごさなくてすみます

こんな経験はないでしょうか?
「PCがエラーを表示しているけど、何度見ても間違いがわからない。ググっても原因がわからない。よくよく調べ尽くして疲れてふと見たら、変数のスペルが間違ってた。」
私は何回もあります。なんなら今でもちょいちょい間違えます。

スペルミスのおかげで思った結果にならない…

Option Explicitを使って変数を宣言しておくと、宣言されてない変数を使ったとき、つまり打ち間違えたときに発見しやすくなります。無駄な時間が減ります。

Option Explicitの役目

では変数を宣言することとOption Explicitの関係を見てみましょう。

変数を宣言する、ということ

「このプログラムでは、total_amountという変数を使います。その中に入れられるのは整数です」
これが変数を宣言するということです。VBAでは次のように書きます。

変数を宣言。でもまだ結果がおかしいです。宣言してない変数も使えてます。

この宣言は次のようにも言い換えられます。
「このプログラムでは、total_amountという変数が使えます。その中には整数しか入れられません」
これは「制約」ですね。
制約をかけることによって自由度を減らすことは、間違って使うことを減らすことでもあります。

Option Explicitは「変数宣言の強要」

変数を宣言しなくても使用できるVBAに、「変数を使用するときは宣言しないとダメ。宣言してない変数は使えませんよ。」と強要するのがOption Explicitの役目です。

Option Explicitのおかげでスペルミスが判明。修正箇所もすぐにわかりました。

上のようにモジュールの一番最初に書いておくことで、Option Explicitは有効になります。
実行させたときに反転している箇所でエラーが発生しています。スペルに「e」が一つ多い、宣言していない変数をつかっている間違いです。エラーは発生しましたが、修正箇所はすぐにわかりました。

だいたいの場合プログラムのSubやFunctionの規模が大きくなればなるほど変数が増えていくので、そのぶん打ち間違いの可能性は増えていきます。Option Explicitを宣言しておくことで、宣言してない変数は使えない、つまりエラーが発生しますので、変数名の打ち間違いに気づきやすくなります。

変数名も工夫するとさらに便利に

さらに変数名をつけるときにちょっと工夫をすると、もっと打ち間違いのミスを減らすことができます。
VBAのエディターは、宣言している変数と同じスペルで入力すると、宣言している変数の形式に整えてくれます。

入力中の「Total_Amount」は全て小文字で入力していますがスペルは同じです。
カーソルを移動させるとTAが大文字になり、宣言の形式に勝手に整えてくれます

これを利用することで、「入力した変数が宣言されているかどうか」がすぐにわかります。スペルがあやふやなときも確かめることができるので便利です。

Option Explicitを使って変数を宣言して使用するクセをつけましょう

以上のようにOption Explicitを記述して変数を宣言してから使用することは、「ミスを未然に防ぐ」「エラーが起こったときに原因をつきとめやすい」ことにつながりますので、ぜひ利用してもらいたいです。
また、このクセはCやC#などのプログラミングをはじめるときにも役立ちます。

Option Explicitを使っている状態を「既定」に設定することもできます。
VBAのエディターのメニューバー>ツール>オプションで下記のウィンドウが開きます。

メニューバーの「ツール」>「オプション」から開く

枠内のチェックを入れておくと、Option Explicitが自動的に宣言されます。ぜひ利用してください。

ちなみに「Explicit」の意味と反対語をついでに覚えておくと良いです。英語でプログラム関係の文書を読むとよく出てきます。

  • explicit → 明示的な、明白な、はっきりした
  • implicit→ 暗示的な、暗に示された、暗黙の

Option Explicitを使って、VBA開発を少しでも効率よく行いましょう!