こんにちは!Excel VBAの世界へようこそ。
マクロの記録ボタンを押して「おっ、動いたぞ!」と感動したのも束の間、自分でコードを書き始めると「なぜか動かない」「変な値が入る」といった壁にぶつかっていませんか?
今日は、プログラミング初学者のあなたが「明日からプロ並みにバグを潰せるようになる」ための、超重要かつ絶対不可欠な第一歩をお伝えします。
テーマは `Option Explicit`(明示的な変数の宣言を強制する) です。
「なんだか難しそうな英語だな…」と思いましたか?大丈夫。ここをクリアすれば、あなたのVBAライフは劇的に安定します。さあ、一緒に扉を開けていきましょう!
—
1. なぜ `Option Explicit` が必要なのか?(魔のスペルミス事件)
VBAを始めたばかりの頃、私たちはついついこんなコードを書いてしまいがちです。
Sub TotalCalc()
‘ 合計を入れる変数 total を用意したつもり
tota1 = 1000 ‘ あれ?最後の「l(エル)」じゃなくて「1(イチ)」打っちゃった!
‘ 消費税を足して計算したい
total = tota1 1.1
MsgBox “合計金額は ” & total & ” 円です”
End Sub
さて、このコードを実行するとどうなると思いますか?
「エラーが出るはず!」と思いますよね。しかし、VBAは平然とした顔でこうポップアップを表示します。
> 合計金額は 0 円です
……えっ? 1000円に1.1をかけたら1100円になるはずなのに、なぜ「0円」になってしまったのでしょうか?
犯人は「勝手に新しい変数を作る機能」
実は、VBAには初期設定で「スペルミスなどで、宣言されていない名前が出てきたら、勝手に新しい変数を作っちゃえ!」というお節介な機能(暗黙の型宣言)が備わっています。
先ほどのコードで何が起きていたかというと:
1. `tota1 = 1000` (「最後の文字が1」の変数に1000を入れた)
2. `total = tota1 1.1` (「正しいtotal」に、「まだ中身がからっぽのtota1(つまり0)」をかけて代入した)
VBAは「あ、`tota1` と `total` は別の変数なんだな」と勝手に解釈してしまい、エラーを出さずに実行してしまったのです。
これが、大規模なマクロになったときに発見が極めて困難になる「沈黙のバグ(サイレントバグ)」の正体です。何時間もコードを見返し、「どこが間違ってるんだ…」と頭を抱える原因は大体これです。
—
2. `Option Explicit` という「最強の守護神」
この恐ろしいお節介機能を強制的にシャットアウトし、VBAにこう言い聞かせる魔法の呪文が `Option Explicit` です。
モジュールの最上部にこの1行を書くだけで、VBAの態度はガラッと変わります。
Option Explicit ‘ ← これを一番上に書く!
Sub TotalCalc()
Dim total As Long
tota1 = 1000 ‘ ← 【ここで即座にコンパイルエラー!】
total = tota1 1.1
MsgBox “合計金額は ” & total & ” 円です”
End Sub
`Option Explicit` を書いた状態で先ほどのスペルミスを犯すと、コードを実行する前にVBAが激怒し、赤く(または黄色く)ハイライトしてこう教えてくれます。
> 「変数が定義されていません」 (Variable not defined)
最高ですね!実行する前にバグを教えてくれるので、私たちは秒速でスペルミスを修正できます。これが、プログラミングにおいて「変数を明示的に宣言する」ことの圧倒的なメリットです。
—
3. 実践:明日から迷わないためのルールと設定
ここからは、実務で絶対に困らないための具体的な作法を解説します。
ルール1:すべてのモジュールの「一番上」に書く
`Option Explicit` は、標準モジュールやシートモジュールの、一番最初の行(Subよりも上)に記述します。
Option Explicit ‘ 必ずここに書く
Sub SampleCode()
‘ ここに処理を書く
End Sub
ルール2:毎回手入力するのを忘れないために「自動設定」にする
「毎回 `Option Explicit` って手打ちしなきゃいけないの?面倒くさそう…」と思いましたか?
ご安心ください。VBE(VBAのコードを書く画面)の神設定を変更すれば、新しいモジュールを作った瞬間に、自動で `Option Explicit` が一番上に挿入されるようになります。
【自動挿入の設定手順】
1. Excelを開き、`[Alt] + [F11]` キーを押してVBE画面を開きます。
2. 上部メニューの [ツール] > [オプション] をクリックします。
3. [編集] タブが開いていることを確認し、[変数の宣言を強制する] にチェックを入れます。
4. [OK] を押して閉じます。
※この設定は一度行えば、あなたのパソコンのExcel VBA環境ずっと適用されます。今日、この設定を終わらせたあなたは、すでに「マクロの記録」を卒業したワンランク上のエンジニアです!
—
まとめ:ここをクリアすれば、VBAの基本はバッチリ!
今回は、Excel VBAを安全かつ強固にするための極意、`Option Explicit` について解説しました。
- 暗黙の型宣言(勝手に変数を作られる機能)はバグの温床である。
- `Option Explicit` を使えば、スペルミスによるエラーを事前に100%防げる。
- VBEの設定で「変数の宣言を強制する」にチェックを入れ、自動化しよう。
「たった1行の呪文」ですが、これがあるのとないのとでは、コードの信頼性が天と地ほど変わります。ぜひ、あなたの開発環境でも設定を確認してみてくださいね。
ここをクリアしたあなたなら、もう変数やデータ型でつまずくことは怖くありません。自信を持って、次のステップへ進みましょう!
