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

Excel VBA VBA
スポンサーリンク

では、先ほどの「定数の定義」を学べる 練習用 Excel マクロ付きファイル を、
初心者でもそのまま作れるように、ステップ形式で丁寧に説明します。


ステップ 1:新しい Excel ファイルを作る

  1. Excel を開く
  2. 空白のブックを新規作成
  3. 名前を付けて保存(例:Const_Scope_Practice.xlsm
     ※拡張子は「.xlsm」(マクロ有効ブック)にすること!

ステップ 2:開発タブを有効化(まだ出ていない場合)

  1. メニューの「ファイル」→「オプション」
  2. 「リボンのユーザー設定」を開く
  3. 右側の一覧で「開発」をチェック
  4. OK をクリック

ステップ 3:VBAエディタを開く

  1. 「開発」タブ → 「Visual Basic」をクリック
  2. VBAエディタが開く
  3. 「挿入」→「標準モジュール」を選ぶ
     → 「Module1」が追加される

ステップ 4:コードを貼り付ける

以下のコードを「Module1」に貼り付けてください。

Option Explicit

' ======== モジュールレベル定数 ========
Const TAX_MODULE As Double = 0.1   ' このモジュール内で共通

' ======== Public定数(全体で共通) ========
Public Const TAX_PUBLIC As Double = 0.08
Public Const APP_TITLE As String = "定数学習シート"

' ======== プロシージャ ========
Sub ローカル定数の例()
    Const TAX_LOCAL As Double = 0.05  ' このSubの中だけ有効
    MsgBox "【ローカル定数】TAX_LOCAL = " & TAX_LOCAL, vbInformation, APP_TITLE
End Sub

Sub モジュール定数の例()
    MsgBox "【モジュール定数】TAX_MODULE = " & TAX_MODULE, vbInformation, APP_TITLE
End Sub

Sub パブリック定数の例()
    MsgBox "【Public定数】TAX_PUBLIC = " & TAX_PUBLIC, vbInformation, APP_TITLE
End Sub

Sub エラー例_再代入()
    Const TAX_LOCAL As Double = 0.05
    ' ↓再代入しようとするとエラー(実行時ではなくコンパイル時に検出される)
    ' TAX_LOCAL = 0.07
End Sub
VB

ステップ 5:ボタンを作ってマクロを実行

  1. Excel に戻る
  2. 「開発」タブ →「挿入」→「フォームコントロールのボタン」
  3. シート上にボタンを4つ並べて配置
  4. それぞれ次のように設定
ボタン名割り当てるマクロ説明
「① ローカル定数」ローカル定数の例Sub内のみ有効な定数を表示
「② モジュール定数」モジュール定数の例モジュール共通定数を表示
「③ Public定数」パブリック定数の例全体共通定数を表示
「④ 再代入エラー」エラー例_再代入再代入するとどうなるか確認(※コメント解除要)

ステップ 6:試してみよう!

  • 各ボタンをクリックしてメッセージを確認
  • それぞれの定数のスコープ(有効範囲)が違うことを体感できる
  • エラー例_再代入 のコメントを外して実行すると、「Const は変更できません」というコンパイルエラーが出る

補足:Public定数を他のモジュールから使う場合

  1. 新しいモジュールを追加(Module2
  2. 次のコードを入れて実行してみましょう👇
Sub Public定数確認()
    MsgBox "他モジュールからでも使える → " & TAX_PUBLIC
End Sub
VB

→ これで「Public定数」が他のモジュールでも有効なことを確認できます!


学習ポイントまとめ

種類定義場所有効範囲再代入使いどころ
Const(ローカル)Sub内そのSubだけ一時的な固定値
Const(モジュール)Sub外(モジュール先頭)モジュール全体同一モジュールで共通設定
Public ConstSub外+Public全モジュール全体設定や共通値

オプション:説明付き「学習支援モード」を追加

ボタンを押すと説明も一緒に表示する拡張コードも作れます👇
(例:「ローカル定数=このプロシージャ内だけで有効です」というメッセージ付き)

このバージョンでは、
ボタンをクリックすると単に値を表示するだけでなく、
「どのスコープで有効か」「何ができないか」 を丁寧に表示します。


目的

  • 定数の 3種類(ローカル/モジュール/Public) の違いを視覚的に理解する
  • メッセージボックスで 値+説明 を自動表示
  • 誤用(再代入など)の挙動も安全に体験できる

コード全体(Module1 に貼り付け)

Option Explicit

' =============================
' 💡 定数の定義エリア
' =============================

' モジュール全体で共通
Const TAX_MODULE As Double = 0.1
Const MODULE_NAME As String = "Module1"

' 他のモジュールからも使える(全体共通)
Public Const TAX_PUBLIC As Double = 0.08
Public Const APP_TITLE As String = "定数の学習支援モード"


' =============================
' 🧩 ローカル定数の例
' =============================
Sub ローカル定数の例_説明付き()
    Const TAX_LOCAL As Double = 0.05
    Dim msg As String
    
    msg = "【ローカル定数】" & vbCrLf & vbCrLf & _
          "Const TAX_LOCAL As Double = 0.05" & vbCrLf & vbCrLf & _
          "▶ この定数は「この Sub の中だけ」で有効です。" & vbCrLf & _
          "▶ 他の Sub では参照できません。" & vbCrLf & _
          "▶ 値を変更しようとするとエラーになります。" & vbCrLf & vbCrLf & _
          "計算例:100 * (1 + TAX_LOCAL) = " & (100 * (1 + TAX_LOCAL))
          
    MsgBox msg, vbInformation, APP_TITLE
End Sub


' =============================
' 🧩 モジュール定数の例
' =============================
Sub モジュール定数の例_説明付き()
    Dim msg As String
    
    msg = "【モジュール定数】" & vbCrLf & vbCrLf & _
          "Const TAX_MODULE As Double = 0.1" & vbCrLf & _
          "(Module1 の先頭で定義)" & vbCrLf & vbCrLf & _
          "▶ このモジュール内の全 Sub で使えます。" & vbCrLf & _
          "▶ 他のモジュールからは使えません。" & vbCrLf & _
          "▶ 定義を1か所にまとめると保守しやすいです。" & vbCrLf & vbCrLf & _
          "計算例:200 * (1 + TAX_MODULE) = " & (200 * (1 + TAX_MODULE))
          
    MsgBox msg, vbInformation, APP_TITLE
End Sub


' =============================
' 🧩 Public定数の例
' =============================
Sub Public定数の例_説明付き()
    Dim msg As String
    
    msg = "【Public定数】" & vbCrLf & vbCrLf & _
          "Public Const TAX_PUBLIC As Double = 0.08" & vbCrLf & _
          "(どのモジュールでも使用可)" & vbCrLf & vbCrLf & _
          "▶ 全プロジェクトで共有できます。" & vbCrLf & _
          "▶ 共通設定・アプリ名・ファイルパスなどに便利。" & vbCrLf & _
          "▶ 同名Public定数の多重定義は避けましょう。" & vbCrLf & vbCrLf & _
          "計算例:300 * (1 + TAX_PUBLIC) = " & (300 * (1 + TAX_PUBLIC))
          
    MsgBox msg, vbInformation, APP_TITLE
End Sub


' =============================
' ⚠️ 再代入エラーの体験モード
' =============================
Sub 再代入エラー例_学習用()
    Dim msg As String
    msg = "【Const再代入テスト】" & vbCrLf & vbCrLf & _
          "Const TAX As Double = 0.05" & vbCrLf & _
          "TAX = 0.07  ← これはエラーになります!" & vbCrLf & vbCrLf & _
          "▶ Constは「定数」なので変更不可です。" & vbCrLf & _
          "▶ 実際にこの行のコメントを外して実行してみましょう。" & vbCrLf & _
          "(コンパイル時にエラーが出ます)"
    MsgBox msg, vbExclamation, APP_TITLE
End Sub
VB

動作のイメージ

ボタン実行マクロ表示内容
🟦 ① ローカル定数ローカル定数の例_説明付きSub内限定+計算結果
🟩 ② モジュール定数モジュール定数の例_説明付きモジュール全体共有の説明+例
🟨 ③ Public定数Public定数の例_説明付き全体共有+活用例
🟥 ④ 再代入テスト再代入エラー例_学習用エラーが出る理由を安全に表示

使い方(ボタン設定)

  1. Excelに戻る
  2. 「開発」タブ →「挿入」→「フォームコントロールのボタン」
  3. 4つボタンを配置して、上の表のマクロを割り当てる
  4. それぞれのボタンに以下のように名前をつけましょう:
ボタン名(表示)割り当てマクロ名
① ローカル定数ローカル定数の例_説明付き
② モジュール定数モジュール定数の例_説明付き
③ Public定数Public定数の例_説明付き
④ 再代入エラー再代入エラー例_学習用

オプション(応用練習)

別モジュールを追加して、Public定数が共有されるか確かめてみましょう:

' --- Module2 ---
Sub Public定数_他モジュールから確認()
    MsgBox "他モジュールから参照 → TAX_PUBLIC = " & TAX_PUBLIC, vbInformation, APP_TITLE
End Sub
VB

学べることまとめ

定数の種類範囲再代入代表的な用途
ローカル定数Sub/Function内一時的な固定値
モジュール定数1つのモジュール全体同一モジュールの共通設定
Public定数全モジュールアプリ全体設定・共通値
(補足)再代入テストコンパイルエラー変更できないことの理解

保存して再利用

  1. ファイル名例:VBA_Const_LearningMode.xlsm
  2. 保存しておけば他の授業や教材でも再利用可能。
  3. メッセージ内容を書き換えれば「If文」「変数スコープ」などの学習支援シートにも転用できます。
VBA
スポンサーリンク
シェアする
@lifehackerをフォローする
スポンサーリンク
タイトルとURLをコピーしました