VBAのコーディングミスの多くは、VBE(Visual Basic Editor)のオプション設定を整えるだけで未然に防げます。特に「変数の宣言を強制する(Option Explicit)」は最初に必ず設定しておきたい項目です。
この記事では、次の内容を順番に解説します。
- Option Explicitで変数のスペルミスを防ぐ方法
- 自動構文チェックのオン・オフの使い分け
- フォントサイズ・色・インデントの見やすい設定
- イミディエイトウィンドウの活用方法
- 設定をまとめて確認するチェックリスト
Option Explicitで変数ミスを防ぐには?
VBAはデフォルトでは変数を宣言しなくても使えます。これが便利に見えて、実は「スペルミスに気づかない」という大きな落とし穴になります。
' Option Explicitなし(ミスに気づけない例)
Sub CalcWithoutExplicit()
Dim total As Long
total = 100
totla = total + 50 ' ← "totla"はスペルミスだが、新しい変数として処理されてしまう
MsgBox totla ' → 50と表示されてしまう(totalは100のまま)
End Sub
Option Explicit を設定すると、宣言していない変数を使おうとした時点でエラーになるため、こうしたミスをすぐに発見できます。
Option Explicit ' ← モジュールの先頭に記述する
Sub CalcWithExplicit()
Dim total As Long
total = 100
totla = total + 50 ' ← コンパイルエラーになるので気づける
MsgBox total
End Sub
自動で Option Explicit を追加する設定方法:
- VBEを開く(Alt+F11)
- メニューの「ツール」→「オプション」を開く
- 「編集」タブの「変数の宣言を強制する」にチェックを入れる
- OKを押す
この設定をすると、新しくモジュールを作成したときに自動で Option Explicit が先頭に追加されます。既存のモジュールには手動で追加が必要です。
自動構文チェックをどう使うには?
VBAのデフォルト設定では、1行書き終わった瞬間に構文ミスがあるとポップアップで警告が出ます。これが集中を途切れさせてストレスになる場合は、オフにするのも一つの方法です。
| 設定 | 動作 | 向いている人 |
|---|---|---|
| 自動構文チェック:オン(デフォルト) | 1行書くごとにポップアップで警告 | 初心者・エラーをその場で確認したい人 |
| 自動構文チェック:オフ | ポップアップは出ない。エラー行は赤文字で表示される | 書くスピードを止めたくない人 |
オフにする手順:
- VBEの「ツール」→「オプション」
- 「編集」タブの「自動構文チェック」のチェックを外す
オフにしても構文ミスのある行は赤文字で表示されるため、見落とすことはありません。ポップアップだけが出なくなります。
コードを見やすくする書式設定をするには?
VBEのフォントやインデントを調整するだけで、コードが格段に読みやすくなります。
設定場所:「ツール」→「オプション」→「エディタの書式設定」タブ
フォントとサイズ
デフォルトの「MS ゴシック 10pt」は小さくて見づらいと感じる場合があります。次の設定がおすすめです。
- フォント:MS ゴシック または Consolas(等幅フォントが読みやすい)
- サイズ:12〜14pt(長時間作業でも疲れにくい)
コードの色分け
VBEではコードの種類ごとに色が設定されています。「エディタの書式設定」タブで変更できます。
| コードの種類 | デフォルトの色 | 用途 |
|---|---|---|
| 通常のテキスト | 黒 | 通常のコード |
| キーワード | 青 | Sub・Dim・If・For など |
| コメント | 緑 | ‘(シングルクォート)以降の説明文 |
| 構文エラー | 赤 | 文法ミスのある行 |
| 実行中の行 | 黄色背景 | ステップ実行時の現在行 |
インデント幅
デフォルトのインデント幅は4です。「編集」タブの「タブストップ幅」で変更できます。2〜4が一般的です。インデントはコードの構造を視覚的に表すためにとても重要です。
' インデントが揃っているコード(読みやすい)
Sub GoodIndent()
Dim i As Long
For i = 1 To 10
If Cells(i, 1).Value > 0 Then
Cells(i, 2).Value = "正の数"
End If
Next i
End Sub
イミディエイトウィンドウを活用するには?
イミディエイトウィンドウは、マクロの動作を確認するための「ログ出力エリア」です。Debug.Print で出力した内容がここに表示されます。
開き方:Ctrl+G(またはVBEメニュー「表示」→「イミディエイトウィンドウ」)
Sub CheckValues()
Dim i As Long
For i = 1 To 5
' MsgBoxだとクリックが必要だが、Debug.Printなら自動で出力される
Debug.Print "i=" & i & " / 値=" & Cells(i, 1).Value
Next i
End Sub
実行後にイミディエイトウィンドウを確認すると、次のように出力されます。
i=1 / 値=100
i=2 / 値=200
i=3 / 値=
i=4 / 値=50
i=5 / 値=300
イミディエイトウィンドウの便利な使い方:
- 変数の値を確認する:ループ途中の変数の変化を追える。
- 条件分岐のデバッグ:どの条件に入っているかをログで確認できる。
- コードを直接実行する:ウィンドウに
?Cells(1,1).Valueと入力してEnterを押すと、その場で値を確認できる。
イミディエイトウィンドウで?と入力するのは、VBAのPrint(出力せよ)という命令の省略形です。つまり?Cells(1,1).Valueは、「セルA1の値をここに表示せよ」という意味になります。
設定をまとめて確認するには?
VBEを使い始めたら次の設定を一度確認しておきましょう。
| 設定項目 | 場所 | おすすめの設定 |
|---|---|---|
| 変数の宣言を強制する | ツール→オプション→編集タブ | チェックを入れる(必須) |
| 自動構文チェック | ツール→オプション→編集タブ | 好みに合わせて(慣れたらオフでもOK) |
| タブストップ幅(インデント) | ツール→オプション→編集タブ | 2〜4(デフォルトは4) |
| フォントとサイズ | ツール→オプション→エディタの書式設定タブ | 等幅フォント・12〜14pt |
| イミディエイトウィンドウ | 表示メニュー or Ctrl+G | 常に表示しておくと便利 |
まとめ
- Option Explicit:変数の宣言を強制。スペルミスによる意図しない動作を防ぐ。最優先で設定する。
- 自動構文チェック:オフにするとポップアップが出なくなり、集中してコードを書ける。エラー行は赤文字で残る。
- フォント・サイズ:等幅フォントの12〜14ptが見やすい。長時間作業での疲労軽減にも効果的。
- インデント幅:2〜4が一般的。揃ったインデントでコードの構造が一目でわかる。
- イミディエイトウィンドウ:Debug.Printと組み合わせてログを確認する。直接コードを実行する用途にも使える。
よくある質問
Option Explicitは既存のモジュールにも自動で追加されますか?
なりません。「変数の宣言を強制する」設定は、設定後に新規作成するモジュールにだけ自動追加されます。既存のモジュールには、モジュールの先頭に手動で Option Explicit と入力してください。
Option Explicitを設定すると今まで動いていたコードが動かなくなります
変数を宣言せずに使っていたコードは、Option Explicit を追加するとコンパイルエラーになります。エラーになった変数をすべて Dim で宣言することで解決します。面倒に感じるかもしれませんが、これを機に宣言漏れをすべて修正しておくと後々のバグを防げます。
イミディエイトウィンドウに出力された内容はどうやって消しますか?
イミディエイトウィンドウ上でCtrl+Aで全選択してDeleteキーを押すと内容を消去できます。マクロを実行するたびにどんどん追記されるため、確認後は適宜クリアしておくと見やすくなります。
VBEのフォント設定を変えると、既存のコードの見た目も変わりますか?
変わります。VBEのフォント設定はエディタ全体に適用されるため、既存のすべてのモジュールの表示に反映されます。コードの内容(文字データ)には影響しません。
自動インデントが邪魔に感じます。オフにできますか?
VBEでは完全にオフにする設定はありませんが、「タブストップ幅」を1に設定すると最小限のインデントにできます。また、Shift+Tab でインデントを減らすこともできます。インデントはコードの構造を視覚的に示す大切な役割があるため、完全になくすのではなく幅を調整する方向がおすすめです。
動画で学びたい方へ
「記事を読んでも、実際に自分で書けるか不安…」という方には、動画で基礎からじっくり学べる講座がおすすめです。
VBAが初めての方を前提に、つまずきやすいポイントを先回りして解説しています。サンプル動画は無料でご覧いただけます。



