では、「定数(Const)を理解・比較できる練習用 Excel マクロ付きファイル」の中身を、
そのまま貼り付けて動かせるように 完全な手順+VBAコード で説明します。
学習用テーマ:定数(Const)の使い方とスコープの違い
この練習では次の3パターンを試せます。
1️⃣ プロシージャ内定数(ローカル定数)
2️⃣ モジュールレベル定数
3️⃣ Public定数(他モジュールからも使える)
さらに、ボタンを押すと結果が表示されるので、
「どのスコープで使えるか」を目で見て理解できます。
ファイル作成手順
① 新しいブックを開く
Excelを開いて「新規ブック」を作ります。
② マクロを有効にする
- 拡張子を「
.xlsm」で保存(例:Const_Scope_Practice.xlsm)
③ 「開発」タブ →「Visual Basic」でVBAエディタを開く
- 標準モジュールを2つ作ります
Module1… メインの練習コードModule2… Public定数のテスト用
Module1 のコード
これを Module1 にペーストしてください。
'========================================
' 定数(Const)のスコープ練習モジュール
'========================================
Option Explicit
' --- モジュールレベル定数(Module1内のみ有効) ---
Const MODULE_TAX As Double = 0.08
Sub ShowLocalConst()
'=== プロシージャ内(ローカル)定数 ===
Const LOCAL_TAX As Double = 0.05
Dim price As Double
price = 100
MsgBox "【ローカル定数】" & vbCrLf & _
"税込価格 = " & price * (1 + LOCAL_TAX), vbInformation
End Sub
Sub ShowModuleConst()
Dim price As Double
price = 100
MsgBox "【モジュールレベル定数】" & vbCrLf & _
"税込価格 = " & price * (1 + MODULE_TAX), vbInformation
End Sub
Sub ShowPublicConst()
Dim price As Double
price = 100
' Module2で定義したPublic定数を参照
MsgBox "【Public定数(他モジュール参照)】" & vbCrLf & _
"税込価格 = " & price * (1 + PUBLIC_TAX), vbInformation
End Sub
'=== 説明付き「学習支援モード」 ===
Sub ShowConstHelp()
Dim msg As String
msg = "◆ 定数(Const)のスコープまとめ ◆" & vbCrLf & vbCrLf & _
"① プロシージャ内 Const → その中だけ有効" & vbCrLf & _
"② モジュール先頭 Const → 同モジュール全体で有効" & vbCrLf & _
"③ Public Const → どのモジュールからも有効" & vbCrLf & vbCrLf & _
"Const は再代入できません! (TAX = 0.05 などはエラー)" & vbCrLf & _
"コードを変更しながら動作確認してみましょう!"
MsgBox msg, vbInformation, "Constの基本ルール"
End Sub
VBModule2 のコード
これを Module2 にペーストしてください。
'========================================
' Public定数テスト用モジュール
'========================================
Option Explicit
Public Const PUBLIC_TAX As Double = 0.1
Sub TestPublicConst()
MsgBox "Module2内からも使用可能: 税率=" & PUBLIC_TAX
End Sub
VBシートにボタンを配置(推奨)
- Excel画面で「開発」タブ →「挿入」→「フォームコントロールのボタン」
- ボタンを4つ配置し、それぞれに以下のマクロを割り当ててください:
| ボタン名 | 割り当てマクロ | 説明 |
|---|---|---|
| ローカル定数 | ShowLocalConst | Sub内だけで有効 |
| モジュール定数 | ShowModuleConst | 同モジュール内で有効 |
| Public定数 | ShowPublicConst | 全モジュールで有効 |
| 定数の説明 | ShowConstHelp | 解説ポップアップ表示 |
試してみよう!
ボタンを順番にクリックして、メッセージ内容の違いを確認しましょう。
| マクロ | 出力例 |
|---|---|
| ShowLocalConst | 「税込価格 = 105」 |
| ShowModuleConst | 「税込価格 = 108」 |
| ShowPublicConst | 「税込価格 = 110」 |
| ShowConstHelp | 定数スコープまとめが表示される |
注意と補足
| よくあるミス | 原因 |
|---|---|
Const に値を代入しようとするとエラー | 定数は変更不可 |
別モジュールで Const が見えない | Public Const にしていない |
| Const 定義で変数を使う | Const は固定値のみ許可(変数は不可) |
学びのポイントまとめ
✅ 定数は「変わらない値」に名前を付ける
✅ 読みやすく、変更に強いコードにできる
✅ スコープ(どこまで有効か)を理解するとトラブルが減る
✅ 「Public Const」は設定値共有に便利

