【入門編】「Option Explicit」の強制設定:VBEのオプション変更でタイポによるバグを未然に防ぐ – Excel VBA解析バイブル

スポンサーリンク

こんにちは!Excelマクロの記録から一歩踏み出し、「自分でコードを書けるようになりたい!」と熱意を燃やしているあなたへ。

今回は、VBAエンジニアとして生きる私たちが、プロジェクトの最初に絶対に、例外なく、何が何でも行うべき「聖域の初期設定」についてお話しします。

ここをクリアするだけで、あなたのVBAライフから「原因不明のバグに何時間も悩まされる悪夢」が嘘のように消え去ります。さあ、堅牢で美しいコードを書くための第一歩を踏み出しましょう!

1. なぜ「マクロの記録」のままでは限界が来るのか?

Excelの「マクロの記録」は素晴らしい機能です。操作を記録するだけでコードを生成してくれますからね。しかし、そこから自分でコードを書き始めようとしたとき、多くの人が次のような壁にぶつかります。

  • 「昨日まで動いていたのに、今日は『変数が定義されていません』というエラーが出る」
  • 「動くには動くが、セルの値がなぜか `Empty`(空っぽ)になって計算が狂う」
  • 「コードのどこかで変数名を打ち間違えた(タイポした)せいで、意図しない場所にデータを書き込んでしまった」

これらのトラブルの9割は、あるたった一つの設定を怠っていることが原因です。それが今回テーマにする `Option Explicit`(明示的な変数宣言の強制) です。

2. タイポ地獄の恐怖:放置されたVBAは「野良犬」と同じ

まずは、この恐ろしいコードを見てください。`Option Explicit` が設定されていない状態の悲劇です。

Sub CalclateTax()
‘ 消費税を計算して合計を出すマクロのつもり…
Dim totalPrise As Long ‘ ← ここで “totalPrise”(e)と宣言している

totalPrice = 10000 ‘ ← あれ? ここでは “totalPrice”(i)と打ってしまった!

‘ 税率10%をかけて出力
MsgBox totalPrice 1.1
End Sub

さて、このマクロを実行するとどうなるでしょうか?
コンパイルエラー(実行前の文法チェック)は起きません。VBAは涼しい顔をして実行されます。

しかし、結果は… 「0」または「予期せぬ空の値」 が返されます。

【何が起きたのか?】
VBAは「`totalPrice` なんて変数は宣言されていないけれど、新しく勝手にメモリを確保してあげよう。初期値はもちろん空っぽ(0)だね!」と、あなたのタイポ(打ち間違い)を親切心から「新しい変数」として勝手に解釈してしまったのです。

正しく宣言した `totalPrise` には `10000` が入っているのに、計算に使ったのは勝手に作られた空っぽの `totalPrice`。コードが長大になったとき、この手のバグを見つけるのは、干し草の針を探すような苦行になります。

これが、タイポによるバグの正体です。

3. 救世主 `Option Explicit` とは何か?

ここで登場するのが `Option Explicit` です。日本語に訳すなら、「変数は必ず最初に宣言しなさい!さもないと絶対にコードを実行させません!」という、VBAに対する厳格な「誓約」です。

この一文をモジュールの最上部に書いておくと、先ほどのコードはこうなります。

Option Explicit ‘ ← このモジュールでは変数宣言をごまかさない!

Sub CalclateTax()
Dim totalPrise As Long

totalPrice = 10000 ‘ ← コンパイルエラー!「変数が定義されていません」とVBEが即座に怒ってくれる!

MsgBox totalPrice 1.1
End Sub

実行する前に、VBE(VBAエディタ)が赤字やダイアログで「おいおい、`totalPrice` なんて変数、宣言されてないぞ!」と教えてくれます。つまり、実行する前にバグが消滅するのです。

この「コンパイル時にエラーを検知できる」というサイクルこそが、プログラミングを安定させる最大の秘訣です。

4. 【実戦】VBEの設定で「自動的」にこれを義務化する

「毎回 `Option Explicit` って手動で書くの面倒くさいな…」と思いましたか?
ご安心ください。世界中のプログラミングを愛する先人たちが、そんなズボラ(効率化)を許すはずがありません。

VBEの設定を一度変更するだけで、今後新しく作るすべての標準モジュールに、自動で `Option Explicit` が最上部に挿入されるようになります。

設定の手順(3分で終わります)

1. Excelを開き、`[Alt] + [F11]` キーを押して VBE(Visual Basic Editor) を起動します。
2. メニューバーの [ツール (Tools)][オプション (Options)] をクリックします。
3. 開いたダイアログボックスの [編集 (Editor)] タブを開きます。
4. 「変数の宣言を強制する (Require Variable Declaration)」 というチェックボックスにチェックを入れます。
5. [OK] をクリックして閉じます。

これだけです!
これ以降、新しく挿入した標準モジュールの頭には、必ず最初から `Option Explicit` が鎮座するようになります。過去に作ったモジュールには適用されないので、既存のコードを触る際はお手動で追加してくださいね。

5. 現場のプロからのアドバイス:変数の型を制する者はVBAを制する

`Option Explicit` を有効にすると、変数を `Dim` で宣言することが義務付けられます。ここで意識してほしいのが「データ型(Type)」の指定です。

‘ 良い例:型を明確に指定している
Dim 顧客ID As Long
Dim 登録日時 As Date
Dim 氏名 As String
Dim 判定フラグ As Boolean

何も指定せずに `Dim x` と書くと、VBAはすべてを万能型である `Variant`(バリアント型)として扱います。これは何でも入る便利な箱ですが、メモリを大量に消費し、動作が重くなり、予期せぬ型変換バグの温床になります。

  • 整数なら `Long`
  • 小数・金額なら `Currency` または `Double`
  • 文字列なら `String`
  • 日付なら `Date`
  • True/False なら `Boolean`

型を制覇することは、バグを生まないコードを書くための王道です。

まとめ:ここをクリアすれば、Excel VBAの基本はバッチリですよ!

いかがでしたでしょうか?
今回は、VBA開発において最も重要と言っても過言ではない `Option Explicit` の設定と、その恩恵について解説しました。

  • 「マクロの記録」の先へ進むなら、変数の宣言は必須。
  • `Option Explicit` を使えば、タイポによる恐怖のバグを事前にシャットアウトできる。
  • VBEのオプションで「変数の宣言を強制する」にチェックを入れ、自動化せよ。

この設定を済ませたあなたのVBEは、もう素人のおもちゃではありません。プロフェッショナルな開発環境そのものです。

ここをクリアしたあなたなら、明日からのVBAコーディングが劇的に安全で、楽しいものに変わるはずです。自信を持って、次のステップへ進んでくださいね!

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