Excel VBA | 定数を定義する

Excel VBA VBA
スポンサーリンク

では、「定数(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
VB

Module2 のコード

これを Module2 にペーストしてください。

'========================================
' Public定数テスト用モジュール
'========================================
Option Explicit

Public Const PUBLIC_TAX As Double = 0.1

Sub TestPublicConst()
    MsgBox "Module2内からも使用可能: 税率=" & PUBLIC_TAX
End Sub
VB

シートにボタンを配置(推奨)

  1. Excel画面で「開発」タブ →「挿入」→「フォームコントロールのボタン」
  2. ボタンを4つ配置し、それぞれに以下のマクロを割り当ててください:
ボタン名割り当てマクロ説明
ローカル定数ShowLocalConstSub内だけで有効
モジュール定数ShowModuleConst同モジュール内で有効
Public定数ShowPublicConst全モジュールで有効
定数の説明ShowConstHelp解説ポップアップ表示

試してみよう!

ボタンを順番にクリックして、メッセージ内容の違いを確認しましょう。

マクロ出力例
ShowLocalConst「税込価格 = 105」
ShowModuleConst「税込価格 = 108」
ShowPublicConst「税込価格 = 110」
ShowConstHelp定数スコープまとめが表示される

注意と補足

よくあるミス原因
Const に値を代入しようとするとエラー定数は変更不可
別モジュールで Const が見えないPublic Const にしていない
Const 定義で変数を使うConst は固定値のみ許可(変数は不可)

学びのポイントまとめ

✅ 定数は「変わらない値」に名前を付ける
✅ 読みやすく、変更に強いコードにできる
✅ スコープ(どこまで有効か)を理解するとトラブルが減る
✅ 「Public Const」は設定値共有に便利

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