Excel VBA 定数スコープ可視化版
では今回は、「クリックで説明表示+スコープを色で可視化」する
インタラクティブ版:定数スコープ学習シート(Excel VBA) を作りましょう。
このバージョンでは下記のように動きます。
動作イメージ
| 操作 | 表示内容 |
|---|---|
| シート上のボタンをクリック | 各定数タイプの説明がポップアップ |
| クリックした行・領域が色付き | 定数の有効範囲を「色」で視覚表示 |
| もう一度クリック | 色がリセットされる(学習し直し可) |
1. シート構成
「定数スコープ学習」シートに次の表を作ります👇
| セル範囲 | 内容 | 背景色(初期) |
|---|---|---|
| B2 | ローカル定数 | 薄灰色 |
| B3 | モジュール定数 | 薄灰色 |
| B4 | Public定数 | 薄灰色 |
そして、各セルをボタン代わりにクリックできるようにします。
(セルにハイパーリンクやボタンを貼ってもOK)
2. コード全体(標準モジュール Module1 に貼り付け)
Option Explicit
' ===========================================
' 💡 定数の定義
' ===========================================
Const TAX_MODULE As Double = 0.1 ' モジュール内共通
Public Const TAX_PUBLIC As Double = 0.08 ' 全体共通
Public Const APP_TITLE As String = "定数スコープ学習シート"
' ===========================================
' 🎨 色設定(見やすくするための定義)
' ===========================================
Const COLOR_LOCAL As Long = RGB(173, 216, 230) ' 水色
Const COLOR_MODULE As Long = RGB(144, 238, 144) ' 薄緑
Const COLOR_PUBLIC As Long = RGB(255, 255, 153) ' 薄黄
Const COLOR_DEFAULT As Long = RGB(240, 240, 240) ' 灰色(初期状態)
' ===========================================
' 🧹 背景リセット
' ===========================================
Sub ResetColors()
With Worksheets("定数スコープ学習")
.Range("B2:B4").Interior.Color = COLOR_DEFAULT
End With
End Sub
' ===========================================
' 🧩 ローカル定数の可視化
' ===========================================
Sub ShowLocalConst()
Call ResetColors
Dim ws As Worksheet
Set ws = Worksheets("定数スコープ学習")
ws.Range("B2").Interior.Color = COLOR_LOCAL
Const TAX_LOCAL As Double = 0.05
Dim msg As String
msg = "【ローカル定数】" & vbCrLf & _
"Const TAX_LOCAL As Double = 0.05" & vbCrLf & vbCrLf & _
"▶ この定数は「このSubの中だけ」で有効です。" & vbCrLf & _
"▶ 他のSubからは参照できません。" & vbCrLf & _
"▶ 値の変更は不可(Constは固定値)。" & vbCrLf & vbCrLf & _
"計算例:100 * (1 + TAX_LOCAL) = " & (100 * (1 + TAX_LOCAL))
MsgBox msg, vbInformation, APP_TITLE
End Sub
' ===========================================
' 🧩 モジュール定数の可視化
' ===========================================
Sub ShowModuleConst()
Call ResetColors
Dim ws As Worksheet
Set ws = Worksheets("定数スコープ学習")
ws.Range("B3").Interior.Color = COLOR_MODULE
Dim msg As String
msg = "【モジュール定数】" & vbCrLf & _
"Const TAX_MODULE As Double = 0.1" & vbCrLf & vbCrLf & _
"▶ Module1全体で有効。" & vbCrLf & _
"▶ 他モジュールでは使用できません。" & vbCrLf & _
"▶ 共通の設定値などに最適。" & vbCrLf & vbCrLf & _
"計算例:200 * (1 + TAX_MODULE) = " & (200 * (1 + TAX_MODULE))
MsgBox msg, vbInformation, APP_TITLE
End Sub
' ===========================================
' 🧩 Public定数の可視化
' ===========================================
Sub ShowPublicConst()
Call ResetColors
Dim ws As Worksheet
Set ws = Worksheets("定数スコープ学習")
ws.Range("B4").Interior.Color = COLOR_PUBLIC
Dim msg As String
msg = "【Public定数】" & vbCrLf & _
"Public Const TAX_PUBLIC As Double = 0.08" & vbCrLf & vbCrLf & _
"▶ 全モジュールから参照可。" & vbCrLf & _
"▶ プロジェクト全体の共通設定に使える。" & vbCrLf & _
"▶ 同名Public定数の重複は避けること。" & vbCrLf & vbCrLf & _
"計算例:300 * (1 + TAX_PUBLIC) = " & (300 * (1 + TAX_PUBLIC))
MsgBox msg, vbInformation, APP_TITLE
End Sub
VB3. シートとボタンの連動
手順:
- Excelに戻り、「定数スコープ学習」シートを開く
- 「開発」タブ →「挿入」→「フォームコントロールのボタン」
- 下記のように配置・設定
| 表示名 | 割り当てマクロ | 色変化セル |
|---|---|---|
| 🟦 ローカル定数 | ShowLocalConst | B2 |
| 🟩 モジュール定数 | ShowModuleConst | B3 |
| 🟨 Public定数 | ShowPublicConst | B4 |
- 各ボタンをクリックすると:
- 対応セルの背景色が変化
- ポップアップで定数の説明+計算例を表示
4. 視覚的な理解ポイント
| 色 | 意味 | スコープ |
|---|---|---|
| 🟦 水色 | ローカル定数 | Sub内限定 |
| 🟩 緑 | モジュール定数 | 同一モジュール全体 |
| 🟨 黄色 | Public定数 | 全モジュール共有 |
| 灰色 | 初期状態 | 非選択 |
5. 拡張アイデア
このシートは教材として応用が効きます👇
| 拡張 | 内容 |
|---|---|
| 🔁 Resetボタン | ResetColors を割り当ててリセット |
| 📘 補足テキスト | セルC2〜C4に説明文を表示して視覚補助 |
| 🎯 クリックセル式 | ボタンではなくセルクリックで動作(Worksheet_SelectionChangeイベント) |
6. ファイル保存
ファイル名例:
📁 Const_Scope_Interactive.xlsm
これで完成です。

