初心者向けに分かりやすく、手を動かしながら学べるように「要点+やってみる例題(解答付き)+設定手順+デバッグのコツ」をまとめます。読みやすく段階を追って説明します。
1. まず概念をやさしく
変数(へんすう)は、値をいったん置いておける「箱」です。
例: x = 10 は「箱 x に 10 を入れた」という意味。
VBA は宣言しなくても箱(変数)を勝手に作って使えますが、これがバグ(タイプミスなど)を見つけにくくします。
そこで使うのが Option Explicit — 「宣言してない変数は使わせないでね」という命令です。これを書くと、宣言していない変数を使うコードはコンパイル時にエラーになります。結果としてバグを早めに見つけられます。
2. Option Explicit を有効にする理由(超かんたん)
- タイプミス(
totalをtota1と間違える等)をすぐに検出できる。 - 変数の役割が明確になりコードが読みやすくなる。
- 型を付けて(
As Integerなど)書けば、余計な型変換や性能問題を避けられる。
3. Option Explicit の書き方・使い方
モジュールの先頭に書きます(↓一番上に必ず)。
Option Explicit
Sub Sample()
Dim x As Integer
x = 10
MsgBox x
End Sub
VBOption Explicit があると、宣言していない変数を使うとコンパイルエラーになります(「変数が定義されていません」など)。
4. VBE(Visual Basic Editor)で自動的に Option Explicit を入れる設定
- Excel で Alt + F11 を押して VBE を開く。
- メニューの「ツール」→「オプション」を選ぶ。
- 「編集」タブ → 「変数の宣言を強制する」にチェックを入れる。
- OK。これで新しいモジュールを作ると先頭に
Option Explicitが自動挿入されます。
既存モジュールには自動で入らないので、手動で先頭に追加してください。
5. 変数宣言の基本パターン(初心者向け)
Dim 変数名— 宣言だけ(型は Variant)Dim 変数名 As Integer— 整数(-32768〜32767)Dim 変数名 As Long— 大きな整数(32-bit)Dim 変数名 As Double— 小数(倍精度)Dim s As String— 文字列Dim b As Boolean— 真/偽(True/False)
例
Dim count As Long
Dim price As Double
Dim name As String
VB型を付けると、間違った値を代入しようとするとエラーになったり、意図しない型変換を防げます。
6. 具体例(実例コード)と解説
例 1:合計を計算してメッセージ表示
Option Explicit
Sub SumExample()
Dim i As Long
Dim total As Long
total = 0
For i = 1 To 5
total = total + i
Next i
MsgBox "1〜5 の合計は " & total ' 結果 15
End Sub
VB解説:i と total を宣言。宣言すると変数の用途が明確。Option Explicit があると、tota1 のようなタイプミスがあったら即エラーになる。
例 2:タイプミスで失敗するコード(Option Explicit なしだと静かに間違う)
Sub BugExample()
total = 10
tota1 = total + 5 ' tota1 は宣言していない別の変数(l が 1 に見えるミス)
MsgBox tota1 ' 意図しない動作になるがエラーにならない(Option Explicit が無ければ)
End Sub
VBOption Explicit を入れるとここで「変数が定義されていません」と教えてくれるので、ミスに気付けます。
例 3:文字列操作(変数の型を付ける利点)
Option Explicit
Sub Greeting()
Dim name As String
name = "太郎"
MsgBox "こんにちは、" & name & "さん!"
End Sub
VB解説:name を String にすると数値を誤って入れたときに扱いが分かりやすいです。
7. スコープ(どこで使えるか)
- Procedure-level(手続き内):
Dim x As IntegerをSub内で宣言 → そのSubの中だけで有効。 - Module-level(モジュール内):
Private x As Integerをモジュールの先頭に書く → 同じモジュール内すべてのプロシージャで有効。 - Public(全プロジェクトで共有):
Public x As Integerを標準モジュールの先頭に書く → 他のモジュールやフォームからも参照可能。
例:
' モジュール先頭
Option Explicit
Public gCount As Long ' 他のモジュールからも使えるグローバル変数
Sub A()
Dim localVar As Integer ' A 内だけ
localVar = 5
End Sub
VB8. デバッグのコツ(宣言と組み合わせて使う)
- VBE のメニュー「デバッグ」→「コンパイル VBAProject」を実行すると、宣言ミスやシンタックスエラーをまとめて見つけられます。
- 変数の中身を確認したいときは「ローカルウィンドウ」や「イミディエイトウィンドウ(Ctrl+G)」を使う。
例:? totalと入力すると現在の値が出る(ブレークしているとき)。 - 変数名はわかりやすく小文字と大文字で単語区切り(
totalAmountやinvoiceDate)を使うと読みやすい。
9. 実習問題(手を動かして覚える)
以下の小問を実際に VBE に打ち込んで動かしてみてください。先にモジュールの先頭に Option Explicit を書いてください。
問題 1
1〜100 の合計を求めてメッセージで表示するマクロを書きなさい。
問題 2
A1 セルにある数値(整数)を読み取って、その 2 倍を A2 に書き込むマクロを書きなさい。A1 に値がない場合は A2 に 0 を書く。
問題 3(タイプミス検出)
以下のコードにあるタイプミスを見つけて修正して動かしてください。(Option Explicit を付けた状態で実行する)
Sub FindBug()
Dim total As Long
total = 100
tota1 = total + 50 ' ← ここがミス(l と 1 を見間違えがち)
MsgBox tota1
End Sub
VB10) 実習問題 解答
解答 1
Option Explicit
Sub Q1()
Dim i As Long
Dim total As Long
total = 0
For i = 1 To 100
total = total + i
Next i
MsgBox "1〜100 の合計は " & total
End Sub
VB解答 2
Option Explicit
Sub Q2()
Dim v As Variant
v = Range("A1").Value
If IsNumeric(v) Then
Range("A2").Value = CLng(v) * 2
Else
Range("A2").Value = 0
End If
End Sub
VB解答 3(修正版)
Option Explicit
Sub FindBug()
Dim total As Long
Dim result As Long
total = 100
result = total + 50
MsgBox result
End Sub
VB※元のコードは tota1(数字の1)になっていて、新しく宣言される別変数になっていました。Option Explicit があると tota1 が宣言されていないためコンパイルエラーになり、ミスに気付けます。
11. よくある質問(FAQ)
- Q
Option Explicitを全モジュールに入れたい - A
新規モジュールに自動挿入する設定にチェックを入れるのが簡単。既存モジュールは手動で先頭に追加するか、検索・置換で一括挿入できます(ただし挿入位置に注意)。
- Q変数の型は全部書くべき?
- A
基本は書くのがベスト。
Variant(型指定なし)は便利ですが、意図しない動作を招きやすいです。
- Q
Option Explicitを入れると何が起きる? - A
宣言していない変数を使うとコンパイル時にエラーになり、タイプミスや未定義の変数を早く見つけられます。
12. 最後に — 初心者向けの推奨ワークフロー
- VBE の設定で「変数の宣言を強制する」にチェック。
- 新しいモジュールを作ったら必ず
Option Explicitを確認。 - 変数は
Dim name As Typeの形で宣言する習慣をつける。 - 定期的に「デバッグ→コンパイル」を実行してエラーを早めに発見。
- まず短く単純なマクロを作って、変数宣言の違い(型あり/なし)を体感する。

