では「定数(Const)の定義方法」をテーマにした、
学習支援モード付きの Excel VBA 練習用ファイル(インタラクティブ版)を作ります。
目的
- 定数の定義方法・スコープ(どこで使えるか)を実際に体験して理解する。
- ボタンをクリックすると、定義箇所の色が変わり、解説が表示される。
SelectionChangeイベントで、範囲を選ぶと対応する説明が出る。
ファイル構成
- シート名:
定数の学習 - ボタン:
- 「ローカル定数を実行」
- 「モジュール定数を実行」
- 「説明をリセット」
- 説明用セル:
B8に説明を表示
完成イメージ
| ボタン | 動作 |
|---|---|
| ▶ ローカル定数を実行 | Sub内に定義したConstを実行。スコープの違いを実体験。 |
| ▶ モジュール定数を実行 | モジュール全体で使えるConstを実行。 |
| 🔄 説明をリセット | 色と説明を初期状態に戻す。 |
モジュールコード(Module1)
VBAエディタ(Alt + F11)を開き、標準モジュールに貼り付けてください。
Option Explicit
'==============================
' 定数定義(モジュールレベル)
'==============================
Public Const TAX_RATE As Double = 0.1
'==============================
' ローカル定数の例
'==============================
Sub LocalConstExample()
Const TAX As Double = 0.08
Dim price As Double
price = 1000
MsgBox "ローカル定数の例" & vbCrLf & _
"税率 (TAX) = " & TAX & vbCrLf & _
"税込価格 = " & price * (1 + TAX), vbInformation
End Sub
'==============================
' モジュールレベル定数の例
'==============================
Sub ModuleConstExample()
Dim price As Double
price = 1000
MsgBox "モジュール定数の例" & vbCrLf & _
"税率 (TAX_RATE) = " & TAX_RATE & vbCrLf & _
"税込価格 = " & price * (1 + TAX_RATE), vbInformation
End Sub
'==============================
' 学習支援:説明表示をリセット
'==============================
Sub ResetExplanation()
With Worksheets("定数の学習")
.Range("B8").Value = "セルをクリックすると説明が表示されます"
.Range("B2:B6").Interior.ColorIndex = xlNone
End With
End Sub
VBシートモジュールコード(定数の学習)
シート名「定数の学習」を右クリック →「コードの表示」で貼り付けます。
Option Explicit
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim msg As String
Dim c As Range
' 一度全部リセット
Me.Range("B2:B6").Interior.ColorIndex = xlNone
' 範囲ごとの説明
Select Case True
Case Not Intersect(Target, Me.Range("B2")) Is Nothing
msg = "Const 定義の基本形です。定数名・データ型・値を指定します。"
Me.Range("B2").Interior.Color = RGB(255, 255, 200)
Case Not Intersect(Target, Me.Range("B3")) Is Nothing
msg = "ローカル定数:Sub内でのみ使える定数です。他のSubからは見えません。"
Me.Range("B3").Interior.Color = RGB(200, 255, 200)
Case Not Intersect(Target, Me.Range("B4")) Is Nothing
msg = "モジュール定数:モジュール内のすべてのSubで利用可能です。"
Me.Range("B4").Interior.Color = RGB(200, 220, 255)
Case Not Intersect(Target, Me.Range("B5")) Is Nothing
msg = "Public Const:他のモジュールからも参照できます。共通設定値に便利。"
Me.Range("B5").Interior.Color = RGB(255, 220, 200)
Case Not Intersect(Target, Me.Range("B6")) Is Nothing
msg = "定数は変更できません。再代入するとコンパイルエラーになります。"
Me.Range("B6").Interior.Color = RGB(255, 200, 200)
End Select
' 説明を表示
If msg <> "" Then
Me.Range("B8").Value = msg
End If
End Sub
VBシート設計(手順)
- Excel を開いて、シート名を「定数の学習」に変更
- セルに以下を入力
| セル | 内容 |
|---|---|
| B1 | 🧠 定数(Const)の学習モード |
| B2 | Const TAX As Double = 0.08 |
| B3 | Sub LocalConstExample() |
| B4 | Public Const TAX_RATE As Double = 0.1 |
| B5 | モジュール全体で利用可 |
| B6 | TAX = 0.05 ' ←エラー!' |
| B8 | セルをクリックすると説明が表示されます |
- ボタンを挿入(開発タブ → 挿入 → フォームコントロール → ボタン)
- ボタン①:「ローカル定数を実行」 →
LocalConstExampleを割り当て - ボタン②:「モジュール定数を実行」 →
ModuleConstExampleを割り当て - ボタン③:「説明をリセット」 →
ResetExplanationを割り当て
- ボタン①:「ローカル定数を実行」 →
動作確認
- ボタンをクリックするとメッセージボックスで税込価格が表示される。
- セルをクリックすると、対応する部分が色付き+説明文が表示される。
- 「説明をリセット」で元に戻る。
発展課題(上級者向け)
- 定数名・型・値を入力するフォームを作って、コードを自動生成する。
- クリックした定数名に合わせてコードウィンドウを開く(
Application.VBE.ActiveWindow活用)。

