Excel VBA | 定数の定義 練習用 Excel ファイル を作る

Excel VBA VBA
スポンサーリンク

Excel VBA 定数スコープ可視化版

では今回は、「クリックで説明表示+スコープを色で可視化」する
インタラクティブ版:定数スコープ学習シート(Excel VBA) を作りましょう。

このバージョンでは下記のように動きます。


動作イメージ

操作表示内容
シート上のボタンをクリック各定数タイプの説明がポップアップ
クリックした行・領域が色付き定数の有効範囲を「色」で視覚表示
もう一度クリック色がリセットされる(学習し直し可)

1. シート構成

「定数スコープ学習」シートに次の表を作ります👇

セル範囲内容背景色(初期)
B2ローカル定数薄灰色
B3モジュール定数薄灰色
B4Public定数薄灰色

そして、各セルをボタン代わりにクリックできるようにします。
(セルにハイパーリンクやボタンを貼っても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
VB

3. シートとボタンの連動

手順:

  1. Excelに戻り、「定数スコープ学習」シートを開く
  2. 「開発」タブ →「挿入」→「フォームコントロールのボタン」
  3. 下記のように配置・設定
表示名割り当てマクロ色変化セル
🟦 ローカル定数ShowLocalConstB2
🟩 モジュール定数ShowModuleConstB3
🟨 Public定数ShowPublicConstB4
  1. 各ボタンをクリックすると:
    • 対応セルの背景色が変化
    • ポップアップで定数の説明+計算例を表示

4. 視覚的な理解ポイント

意味スコープ
🟦 水色ローカル定数Sub内限定
🟩 緑モジュール定数同一モジュール全体
🟨 黄色Public定数全モジュール共有
灰色初期状態非選択

5. 拡張アイデア

このシートは教材として応用が効きます👇

拡張内容
🔁 ResetボタンResetColors を割り当ててリセット
📘 補足テキストセルC2〜C4に説明文を表示して視覚補助
🎯 クリックセル式ボタンではなくセルクリックで動作(Worksheet_SelectionChangeイベント)

6. ファイル保存

ファイル名例:
📁 Const_Scope_Interactive.xlsm

これで完成です。

VBA
スポンサーリンク
シェアする
@lifehackerをフォローする
スポンサーリンク
タイトルとURLをコピーしました