この記事で解決できる悩み
✅ Private ConstとPublic Constの違いが分からない
✅ ConstとDimの使い分けが分からない
✅ 定数の命名規則が分からない
✅ どこで定数を宣言すればいいか分からない
✅ 実務で使える定数管理のベストプラクティスが知りたい
この記事を読むと…
- Private Const/Public Const/Constの3つの違いが完璧に理解できる
- 定数を使うメリットとデメリットが分かる
- 実例コード15個で定数の使い方を習得
- 定数の命名規則とベストプラクティスを実践できる
- 実務で使える定数管理テンプレートを取得できる
Private Constとは?3つの定数宣言を3分で理解
3つの定数宣言の違い
VBAでは、定数を宣言する方法が3種類あります。
| 宣言方法 | スコープ(適用範囲) | 宣言場所 | 使用例 |
|---|---|---|---|
| Const | プロシージャ内のみ | プロシージャ内 | Sub Test() の中で宣言 |
| Private Const | モジュール内のみ | モジュールの先頭 | 標準モジュール・クラスモジュールの宣言セクション |
| Public Const | プロジェクト全体 | 標準モジュールの先頭 | 全モジュールから参照可能 |
スコープを図で理解
【パターン1: Const(プロシージャレベル)】
Sub CalculatePrice()
Const TAX_RATE As Double = 0.1 ← この中だけで使える
Debug.Print 100 * (1 + TAX_RATE) '→ 110
End Sub
Sub AnotherProc()
Debug.Print TAX_RATE '← エラー!TAX_RATEは使えない
End Sub
【パターン2: Private Const(モジュールレベル)】
'▼ モジュール先頭に宣言
Private Const TAX_RATE As Double = 0.1
Sub CalculatePrice()
Debug.Print 100 * (1 + TAX_RATE) '→ 110 使える!
End Sub
Sub AnotherProc()
Debug.Print TAX_RATE '→ 0.1 使える!
End Sub
'【別モジュール】
Sub DifferentModule()
Debug.Print TAX_RATE '← エラー!別モジュールでは使えない
End Sub
【パターン3: Public Const(プロジェクトレベル)】
'▼ 標準モジュールの先頭に宣言
Public Const TAX_RATE As Double = 0.1
'【どのモジュールからも使える】
Sub AnyModule()
Debug.Print TAX_RATE '→ 0.1 どこでも使える!
End Sub
Private ConstとPublic Constの違い
比較表
| 項目 | Private Const | Public Const |
|---|---|---|
| 適用範囲 | 宣言したモジュール内のみ | プロジェクト全体(全モジュール) |
| 宣言場所 | 標準/クラスモジュールの先頭 | 標準モジュールの先頭のみ |
| 他モジュールから参照 | ❌ 不可 | ✅ 可能 |
| カプセル化 | ✅ 高い | ❌ 低い |
| 推奨用途 | モジュール固有の設定値 | プロジェクト全体の共通定数 |
使い分けの基本ルール
Private Constを使う場面
- そのモジュール内でのみ使う定数
- 他のモジュールに公開したくない内部設定値
- カプセル化を重視する場合
Public Constを使う場面
- プロジェクト全体で共通の定数(税率、バージョン情報など)
- 複数のモジュールで参照する設定値
- グローバルな定数として公開したい値
実例1: Private Constの使用例
'▼ Module1の先頭
Option Explicit
'このモジュール内だけで使う定数
Private Const MAX_ROWS As Long = 1000
Private Const START_ROW As Long = 2
Private Const SHEET_NAME As String = "データ"
Sub ProcessData()
Dim ws As Worksheet
Set ws = ThisWorkbook.Worksheets(SHEET_NAME)
Dim i As Long
For i = START_ROW To MAX_ROWS
ws.Cells(i, 1).Value = i
Next i
Debug.Print "処理完了: " & MAX_ROWS & "行"
End Sub
Sub ValidateData()
'同じモジュール内なので定数が使える
If Range("A" & MAX_ROWS).Value <> "" Then
Debug.Print "最終行まで到達"
End If
End Sub
実例2: Public Constの使用例
'▼ GlobalConstants モジュールの先頭
Option Explicit
'プロジェクト全体で使う定数
Public Const APP_VERSION As String = "1.0.0"
Public Const TAX_RATE As Double = 0.1
Public Const MAX_FILE_SIZE As Long = 10485760 '10MB
Public Const ERR_FILE_NOT_FOUND As Long = vbObjectError + 1001
Public Const ERR_INVALID_DATA As Long = vbObjectError + 1002
'▼ Module1
Sub CalculatePrice()
Dim price As Double
price = 100 * (1 + TAX_RATE) '← Public Constなので使える
Debug.Print "税込価格: " & price
End Sub
'▼ Module2
Sub ShowVersion()
MsgBox "バージョン: " & APP_VERSION '← Public Constなので使える
End Sub
ConstとDimの違い【変数 vs 定数】
変数(Dim)と定数(Const)の比較
| 項目 | 変数(Dim) | 定数(Const) |
|---|---|---|
| 値の変更 | ✅ 可能 | ❌ 不可(変更するとエラー) |
| メモリ効率 | 実行中はメモリ保持 | コンパイル時に値が埋め込まれる |
| 初期値設定 | 宣言時は省略可 | 宣言時に必須 |
| 型推論 | 省略可(Variant型) | 省略可(自動判定) |
| 推奨用途 | 動的に変わる値 | 固定値・設定値 |
悪い例: 変数を使ってしまう
Sub BadExample()
'変数で宣言(良くない)
Dim TAX_RATE As Double
TAX_RATE = 0.1
'計算1
Dim price1 As Double
price1 = 100 * (1 + TAX_RATE)
'誤って変更してしまう(バグの原因!)
TAX_RATE = 0.2 '← 意図せず変更
'計算2
Dim price2 As Double
price2 = 100 * (1 + TAX_RATE) '← 異なる結果になってしまう
Debug.Print price1 '→ 110
Debug.Print price2 '→ 120(想定外!)
End Sub
良い例: 定数を使う
Sub GoodExample()
'定数で宣言(推奨)
Const TAX_RATE As Double = 0.1
'計算1
Dim price1 As Double
price1 = 100 * (1 + TAX_RATE)
'誤って変更しようとしてもエラーになる
'TAX_RATE = 0.2 '← コンパイルエラー!
'計算2
Dim price2 As Double
price2 = 100 * (1 + TAX_RATE) '← 常に同じ結果
Debug.Print price1 '→ 110
Debug.Print price2 '→ 110(正しい!)
End Sub
定数を使うべき値
以下のような値は必ず定数で宣言してください。
- 税率・手数料率:
Const TAX_RATE As Double = 0.1 - シート名・範囲名:
Const DATA_SHEET As String = "データ" - 列番号:
Const COL_NAME As Long = 1 - 最大値・最小値:
Const MAX_ROWS As Long = 10000 - ファイルパス:
Const LOG_PATH As String = "C:\logs\" - バージョン情報:
Const APP_VERSION As String = "1.0.0" - エラー番号:
Const ERR_CUSTOM As Long = vbObjectError + 1001
Private Constの基本構文と実例5パターン
基本構文
'▼ モジュール先頭(宣言セクション)
Option Explicit
'基本形
Private Const 定数名 As データ型 = 値
'型を省略した場合(自動判定)
Private Const 定数名 = 値
実例3: シート名・列番号の管理
'▼ Module1の先頭
Option Explicit
'シート名
Private Const SHEET_DATA As String = "データ"
Private Const SHEET_RESULT As String = "集計結果"
'列番号
Private Const COL_ID As Long = 1
Private Const COL_NAME As Long = 2
Private Const COL_PRICE As Long = 3
Private Const COL_QUANTITY As Long = 4
Sub ProcessData()
Dim ws As Worksheet
Set ws = ThisWorkbook.Worksheets(SHEET_DATA)
'列番号を定数で管理
ws.Cells(2, COL_ID).Value = 1001
ws.Cells(2, COL_NAME).Value = "商品A"
ws.Cells(2, COL_PRICE).Value = 1000
ws.Cells(2, COL_QUANTITY).Value = 5
Debug.Print "データ登録完了"
End Sub
Sub GetProductName()
Dim ws As Worksheet
Set ws = ThisWorkbook.Worksheets(SHEET_DATA)
'列番号を定数で参照
Debug.Print ws.Cells(2, COL_NAME).Value '→ 商品A
End Sub
実例4: 計算用の定数
'▼ Module2の先頭
Option Explicit
'計算用定数
Private Const TAX_RATE As Double = 0.1 '消費税率
Private Const DISCOUNT_RATE As Double = 0.05 '割引率
Private Const SHIPPING_FEE As Long = 500 '送料
Sub CalculateTotalPrice()
Dim basePrice As Long
basePrice = 10000
'定数を使った計算
Dim discountPrice As Double
discountPrice = basePrice * (1 - DISCOUNT_RATE)
Dim taxIncluded As Double
taxIncluded = discountPrice * (1 + TAX_RATE)
Dim totalPrice As Double
totalPrice = taxIncluded + SHIPPING_FEE
Debug.Print "基本価格: " & basePrice '→ 10000
Debug.Print "割引後: " & discountPrice '→ 9500
Debug.Print "税込: " & taxIncluded '→ 10450
Debug.Print "合計(送料込): " & totalPrice '→ 10950
End Sub
実例5: ファイルパス・URL管理
'▼ Module3の先頭
Option Explicit
'ファイルパス
Private Const LOG_DIR As String = "C:\Logs\"
Private Const BACKUP_DIR As String = "C:\Backup\"
Private Const TEMPLATE_PATH As String = "C:\Templates\報告書.xlsx"
'URL
Private Const API_BASE_URL As String = "https://api.example.com/v1/"
Private Const API_TIMEOUT As Long = 30
Sub SaveLog()
Dim logPath As String
logPath = LOG_DIR & Format(Now, "yyyymmdd") & ".txt"
'定数を使ったファイル操作
Dim fso As Object
Set fso = CreateObject("Scripting.FileSystemObject")
Dim logFile As Object
Set logFile = fso.CreateTextFile(logPath, True)
logFile.WriteLine "ログ記録: " & Now
logFile.Close
Debug.Print "ログ保存: " & logPath
Set logFile = Nothing
Set fso = Nothing
End Sub
実例6: エラー番号の定数管理
'▼ Module4の先頭
Option Explicit
'カスタムエラー番号
Private Const ERR_FILE_NOT_FOUND As Long = vbObjectError + 1001
Private Const ERR_INVALID_FORMAT As Long = vbObjectError + 1002
Private Const ERR_CONNECTION_FAILED As Long = vbObjectError + 1003
Sub ProcessFile(filePath As String)
On Error GoTo ErrorHandler
'存在確認
Dim fso As Object
Set fso = CreateObject("Scripting.FileSystemObject")
If Not fso.FileExists(filePath) Then
'定数を使ったエラー発生
Err.Raise ERR_FILE_NOT_FOUND, "ProcessFile", "ファイルが見つかりません: " & filePath
End If
'処理
Debug.Print "ファイル処理中: " & filePath
Set fso = Nothing
Exit Sub
ErrorHandler:
'定数を使ったエラー判定
Select Case Err.Number
Case ERR_FILE_NOT_FOUND
MsgBox "ファイルが見つかりません。", vbCritical
Case ERR_INVALID_FORMAT
MsgBox "ファイル形式が不正です。", vbCritical
Case ERR_CONNECTION_FAILED
MsgBox "接続に失敗しました。", vbCritical
Case Else
MsgBox "予期しないエラー: " & Err.Description, vbCritical
End Select
End Sub
実例7: 複数の定数をグループ化
'▼ Module5の先頭
Option Explicit
'========== アプリケーション設定 ==========
Private Const APP_NAME As String = "在庫管理システム"
Private Const APP_VERSION As String = "2.1.0"
Private Const APP_AUTHOR As String = "開発チーム"
'========== データベース設定 ==========
Private Const DB_SERVER As String = "localhost"
Private Const DB_NAME As String = "inventory"
Private Const DB_TIMEOUT As Long = 30
'========== 表示設定 ==========
Private Const FONT_NAME As String = "メイリオ"
Private Const FONT_SIZE As Long = 11
Private Const HEADER_COLOR As Long = RGB(68, 114, 196)
Sub ShowAppInfo()
MsgBox "アプリ名: " & APP_NAME & vbCrLf & _
"バージョン: " & APP_VERSION & vbCrLf & _
"作成者: " & APP_AUTHOR, _
vbInformation
End Sub
Sub FormatHeader()
With Range("A1")
.Font.Name = FONT_NAME
.Font.Size = FONT_SIZE
.Interior.Color = HEADER_COLOR
.Font.Color = RGB(255, 255, 255)
End With
End Sub
定数の命名規則とベストプラクティス
定数の命名規則
推奨される命名規則
1. 全て大文字 + アンダーバー(スネークケース)
'✅ 良い例
Private Const TAX_RATE As Double = 0.1
Private Const MAX_FILE_SIZE As Long = 10485760
Private Const DATA_SHEET_NAME As String = "データ"
Private Const API_BASE_URL As String = "https://api.example.com/"
2. キャメルケース(大文字始まり)
'✅ 良い例(可読性重視の場合)
Private Const TaxRate As Double = 0.1
Private Const MaxFileSize As Long = 10485760
Private Const DataSheetName As String = "データ"
避けるべき命名
'❌ 悪い例
Private Const taxrate As Double = 0.1 '小文字のみ(定数と分からない)
Private Const TR As Double = 0.1 '略語(意味が分からない)
Private Const TaxRateForJapan2024 As Double = 0.1 '長すぎる
Private Const tax_Rate As Double = 0.1 '混在(統一感がない)
定数名の接頭辞ルール
目的別に接頭辞を付けると管理しやすくなります。
| 接頭辞 | 用途 | 例 |
|---|---|---|
| COL_ | 列番号 | COL_NAME, COL_PRICE |
| ROW_ | 行番号 | ROW_HEADER, ROW_START |
| SHEET_ | シート名 | SHEET_DATA, SHEET_RESULT |
| ERR_ | エラー番号 | ERR_FILE_NOT_FOUND |
| MAX_ / MIN_ | 最大値/最小値 | MAX_ROWS, MIN_VALUE |
| PATH_ | ファイルパス | PATH_LOG, PATH_BACKUP |
| URL_ | URL | URL_API, URL_BASE |
実例8: 接頭辞を使った定数管理
'▼ Module6の先頭
Option Explicit
'========== シート名 ==========
Private Const SHEET_DATA As String = "データ"
Private Const SHEET_MASTER As String = "マスタ"
Private Const SHEET_RESULT As String = "結果"
'========== 列番号 ==========
Private Const COL_ID As Long = 1
Private Const COL_NAME As Long = 2
Private Const COL_CATEGORY As Long = 3
Private Const COL_PRICE As Long = 4
'========== 行番号 ==========
Private Const ROW_HEADER As Long = 1
Private Const ROW_START As Long = 2
'========== 最大値・最小値 ==========
Private Const MAX_ROWS As Long = 10000
Private Const MIN_PRICE As Long = 0
'========== ファイルパス ==========
Private Const PATH_LOG As String = "C:\Logs\"
Private Const PATH_EXPORT As String = "C:\Export\"
Sub ProcessWithConstants()
Dim ws As Worksheet
Set ws = ThisWorkbook.Worksheets(SHEET_DATA)
'定数を使った処理
Dim i As Long
For i = ROW_START To MAX_ROWS
If ws.Cells(i, COL_ID).Value = "" Then Exit For
'価格チェック
If ws.Cells(i, COL_PRICE).Value < MIN_PRICE Then
ws.Cells(i, COL_PRICE).Interior.Color = RGB(255, 0, 0)
End If
Next i
End Sub
定数を使うメリット・デメリット
メリット
1. 可読性の向上
'❌ 悪い例: マジックナンバー
If ws.Cells(i, 3).Value > 1000 Then
ws.Cells(i, 5).Value = ws.Cells(i, 3).Value * 0.1
End If
'✅ 良い例: 定数で意味が明確
Private Const COL_PRICE As Long = 3
Private Const COL_TAX As Long = 5
Private Const TAX_RATE As Double = 0.1
If ws.Cells(i, COL_PRICE).Value > 1000 Then
ws.Cells(i, COL_TAX).Value = ws.Cells(i, COL_PRICE).Value * TAX_RATE
End If
2. メンテナンス性の向上
'❌ 悪い例: 同じ値を複数箇所に記述
Sub Proc1()
Debug.Print 0.1 '税率
End Sub
Sub Proc2()
Debug.Print 0.1 '税率(変更時は全箇所修正が必要)
End Sub
'✅ 良い例: 定数で一元管理
Private Const TAX_RATE As Double = 0.1
Sub Proc1()
Debug.Print TAX_RATE '定数を参照
End Sub
Sub Proc2()
Debug.Print TAX_RATE '定数変更だけで全体に反映
End Sub
3. バグの防止
'❌ 悪い例: 変数は意図せず変更される可能性
Dim taxRate As Double
taxRate = 0.1
'処理中に誤って変更
taxRate = 0.2 '← バグの原因!
'✅ 良い例: 定数は変更できない
Const TAX_RATE As Double = 0.1
'変更しようとするとエラー
'TAX_RATE = 0.2 '← コンパイルエラー!
4. パフォーマンスの向上
定数はコンパイル時に値が埋め込まれるため、変数よりもわずかに高速です(体感できるほどの差はありませんが、厳密にはメリットです)。
デメリット
1. 柔軟性の低下
実行時に値を変更する必要がある場合は、定数は使えません。
'定数は実行時に変更できない
Private Const TAX_RATE As Double = 0.1
Sub ChangeTaxRate()
'実行時に変更したい場合は変数を使う
'TAX_RATE = 0.08 '← エラー!
'変数を使う必要がある
Dim dynamicTaxRate As Double
dynamicTaxRate = 0.08 '← 変更可能
End Sub
2. 配列定数の制約
VBAでは配列定数を直接宣言できません。
'❌ 配列定数は宣言できない
'Private Const MONTHS As Variant = Array("1月", "2月", "3月") 'エラー!
'✅ 変数で配列を使う
Private MONTHS As Variant
Sub InitializeArray()
MONTHS = Array("1月", "2月", "3月")
End Sub
実務で使える定数管理テンプレート3選
テンプレート1: 設定値の一元管理モジュール
'▼ ConfigModule(標準モジュール)
Option Explicit
'========================================
' アプリケーション設定定数
'========================================
'========== バージョン情報 ==========
Public Const APP_NAME As String = "販売管理システム"
Public Const APP_VERSION As String = "3.2.1"
Public Const APP_RELEASE_DATE As String = "2026-02-11"
'========== シート名 ==========
Public Const SHEET_DATA As String = "売上データ"
Public Const SHEET_MASTER As String = "商品マスタ"
Public Const SHEET_RESULT As String = "集計結果"
Public Const SHEET_SETTINGS As String = "設定"
'========== 列番号 ==========
Public Const COL_DATE As Long = 1
Public Const COL_PRODUCT_ID As Long = 2
Public Const COL_PRODUCT_NAME As Long = 3
Public Const COL_QUANTITY As Long = 4
Public Const COL_UNIT_PRICE As Long = 5
Public Const COL_SUBTOTAL As Long = 6
Public Const COL_TAX As Long = 7
Public Const COL_TOTAL As Long = 8
'========== 行番号 ==========
Public Const ROW_HEADER As Long = 1
Public Const ROW_DATA_START As Long = 2
'========== 計算定数 ==========
Public Const TAX_RATE As Double = 0.1
Public Const DISCOUNT_THRESHOLD As Long = 10000
Public Const DISCOUNT_RATE As Double = 0.05
'========== ファイルパス ==========
Public Const PATH_LOG As String = "C:\SalesSystem\Logs\"
Public Const PATH_BACKUP As String = "C:\SalesSystem\Backup\"
Public Const PATH_EXPORT As String = "C:\SalesSystem\Export\"
'========== 制限値 ==========
Public Const MAX_ROWS As Long = 50000
Public Const MAX_FILE_SIZE As Long = 52428800 '50MB
'========== カスタムエラー番号 ==========
Public Const ERR_FILE_NOT_FOUND As Long = vbObjectError + 1001
Public Const ERR_INVALID_DATA As Long = vbObjectError + 1002
Public Const ERR_DUPLICATE_ID As Long = vbObjectError + 1003
テンプレート2: モジュール別定数管理
'▼ DataProcessModule(標準モジュール)
Option Explicit
'このモジュール固有の定数(Private)
Private Const MODULE_NAME As String = "DataProcessModule"
Private Const TEMP_SHEET As String = "一時データ"
Private Const PROCESS_CHUNK_SIZE As Long = 1000
Private Const RETRY_COUNT As Long = 3
Private Const RETRY_INTERVAL As Long = 2000 'ミリ秒
Sub ProcessLargeData()
On Error GoTo ErrorHandler
Debug.Print "モジュール: " & MODULE_NAME
Debug.Print "チャンクサイズ: " & PROCESS_CHUNK_SIZE
'データ処理
Dim i As Long
For i = 1 To 10000 Step PROCESS_CHUNK_SIZE
'1000行ずつ処理
Debug.Print "処理中: " & i & " - " & (i + PROCESS_CHUNK_SIZE - 1)
Next i
Exit Sub
ErrorHandler:
Debug.Print "エラー in " & MODULE_NAME & ": " & Err.Description
End Sub
テンプレート3: Enum型を使った定数グループ化
'▼ EnumConstants(標準モジュール)
Option Explicit
'========== Enum型で定数をグループ化 ==========
'シート種別
Public Enum SheetType
stData = 1
stMaster = 2
stResult = 3
stSettings = 4
End Enum
'処理ステータス
Public Enum ProcessStatus
psNotStarted = 0
psProcessing = 1
psCompleted = 2
psFailed = 3
End Enum
'ユーザー権限
Public Enum UserRole
urReadOnly = 1
urEditor = 2
urAdmin = 3
End Enum
'使用例
Sub UseEnumConstants()
Dim status As ProcessStatus
status = psProcessing
Select Case status
Case psNotStarted
Debug.Print "未開始"
Case psProcessing
Debug.Print "処理中"
Case psCompleted
Debug.Print "完了"
Case psFailed
Debug.Print "失敗"
End Select
'権限チェック
Dim userRole As UserRole
userRole = urAdmin
If userRole = urAdmin Then
Debug.Print "管理者権限あり"
End If
End Sub
よくある質問(FAQ)7問
Q1. Private ConstとPublic Constはどう使い分ける?
A. 基本はPrivate Constを使い、本当に全モジュールで共有する場合だけPublic Constを使います。
- Private Const: そのモジュール内だけで使う定数(99%のケース)
- Public Const: プロジェクト全体で共有する定数(税率、バージョン情報など)
ベストプラクティス: まずはPrivate Constで宣言し、必要になったらPublic Constに変更する
Q2. Constを省略してPrivateだけでもいい?
A. **Constを省略すると変数になってしまいます。**必ずConstを付けてください。
'❌ これは変数(定数ではない)
Private TAX_RATE As Double
TAX_RATE = 0.1 '← 変更可能
'✅ これが定数
Private Const TAX_RATE As Double = 0.1
'TAX_RATE = 0.2 '← エラー!変更不可
Q3. 定数の型は省略できる?
A. 省略可能ですが、明示的に指定することを推奨します。
'型省略(自動判定)
Private Const TAX_RATE = 0.1 '→ Double型と判定される
'型指定(推奨)
Private Const TAX_RATE As Double = 0.1
型を明示すると、コードの可読性が上がり、意図しない型変換を防げます。
Q4. クラスモジュールでPublic Constは使える?
A. 使えません。クラスモジュールではPublic Constは宣言できません。
'▼ Class1(クラスモジュール)
'✅ Private Constは使える
Private Const MAX_VALUE As Long = 100
'❌ Public Constは使えない(エラー)
'Public Const TAX_RATE As Double = 0.1
プロジェクト全体で使う定数は、標準モジュールにPublic Constで宣言してください。
Q5. 定数名は大文字にしないとダメ?
A. 必須ではありませんが、強く推奨されます。
一般的なコーディング規約では、定数は全て大文字+アンダーバーで記述します。これにより、変数と定数を一目で区別できます。
'✅ 推奨: 全て大文字
Private Const TAX_RATE As Double = 0.1
Private Const MAX_ROWS As Long = 1000
'△ 許容: キャメルケース
Private Const TaxRate As Double = 0.1
Private Const MaxRows As Long = 1000
'❌ 非推奨: 小文字(変数と区別がつかない)
Private Const taxRate As Double = 0.1
Q6. 定数は実行時に変更できない?
A. はい、変更できません。実行時に変更する必要がある場合は変数を使ってください。
'定数は実行時に変更不可
Private Const TAX_RATE As Double = 0.1
Sub Test()
'TAX_RATE = 0.08 '← エラー!
'実行時に変更したい場合は変数を使う
Dim dynamicTaxRate As Double
dynamicTaxRate = 0.1
'条件によって変更
If 条件 Then
dynamicTaxRate = 0.08
End If
End Sub
Q7. 複数の定数を一度に宣言できる?
A. できません。定数は1行に1つずつ宣言してください。
'❌ 複数宣言は不可
'Private Const TAX_RATE As Double = 0.1, DISCOUNT_RATE As Double = 0.05
'✅ 1行に1つずつ宣言
Private Const TAX_RATE As Double = 0.1
Private Const DISCOUNT_RATE As Double = 0.05
まとめ
この記事で学んだこと
- Private Const/Public Const/Constの3つの違いとスコープ
- ConstとDimの違い(変数 vs 定数)
- 定数を使うメリット(可読性・メンテナンス性・バグ防止)
- 定数の命名規則(全て大文字+アンダーバー推奨)
- 実務で使える定数管理テンプレート

コメント