VBAの定数を分かりやすく解説!【マクロ初心者向けにサンプルコードも掲載】

スポンサードリンク
VBA

VBA(Visual Basic for Applications)では、プログラム中に固定の値を使うことがよくあります。

その際、変数ではなく 「定数」 を使用することで、
コードの可読性が向上し、意図しない値の変更を防ぐことができます。

この記事では、VBAの定数とは何か、どのような種類があるのか、具体的な使い方をわかりやすく解説します。

-著者情報-
名前:Utatane
VBA(マクロ)歴:3年
エクセル使用歴:15年以上
ひとこと:初心者だった当時に戻った気持ちになって解説いたします

スポンサードリンク

VBAにおける定数とは?

定数(Constant)とは、一度設定すると変更できない固定の値のことです。
変数とは異なり、プログラムの途中で値を変更することはできません。

例えば、消費税率や担当者の名前など、変更する必要のない値は定数として扱うと便利です。

定数と変数との違い

以下のとおりです。

変数定数
値の変更不可
宣言方法Dim 変数名 As 型Const 定数名 As 型 = 値
使用目的一時的なデータ保存変更しない値の保存

値を格納できるという点では双方同じですが、宣言方法などが違います。注意してください。

スポンサードリンク

定数の使い方

まずはコードを見てみましょう。
下記VBAコードは、定数を使った一例です。

Sub 定数のサンプルコード()
    Const TAX_RATE As Double = 0.1
    Dim price As Double
    price = 10000
    SalesPrice = price * (1 + TAX_RATE)
    MsgBox "税込価格は " & SalesPrice & " 円です。"
End Sub
実行例

定数の宣言・代入

    Const TAX_RATE As Double = 0.1

上記一文にて、定数の宣言と代入を行っております。

【 Const 定数名 As 型 = 値 】

型の名前や種類については、変数の記事をご参考ください。

変数の場合、宣言と同時に値を代入することはできませんが、
定数は宣言と同時に値を代入することが必須となります。

定数は宣言だけをすることができず、エラーが発生します。

宣言のみでエラー

定数の計算

計算は変数の場合と同じです。

    SalesPrice = price * (1 + TAX_RATE)

▼関連記事

スポンサードリンク

いろいろな定数

「Private」と「Public」

定数を宣言する際、頭に「Private」をつけることで、
定数の有効範囲(使える範囲)が「現在のモジュール内」に広がります。
(「Const」だけならプロシージャ内のみ有効)

また、「Public」をつけることで、全てのモジュール(プロジェクト内全て)で有効となりまず。

Const MAX_VALUE As Integer = 100 ' プロシージャ内でのみ有効
Private Const MAX_VALUE As Integer = 100  ' 現在のモジュール内で有効
Public Const MAX_VALUE As Integer = 100 ' 全てのモジュール(プロジェクト内全て)で有効

いろいろなプロシージャで使いたい定数なら「Private」を、
プロジェクト全体で使いたい場合は「Public」をつけてください。

列挙型(Enum)

複数の関連する定数をまとめて扱いたい場合は、「Enum」を使うと便利です。

Enum ColorCode
    Red = 100
    Green = 200
    Blue = 300
End Enum

Sub 列挙型()
    Dim myColor As ColorCode
    myColor = ColorCode.Red
    MsgBox "選択された色のコードは " & myColor
End Sub
列挙型の実行例

この方法を使うことで、コードの可読性が向上します。

組み込み定数

これまで、自分で定数を作成する方法を解説いたしました。
定数には組み込み定数といって、元々VBAに標準装備されているものがあります。
代表的なものをいくつか紹介いたします。

  • vbCrLf:改行コード(文章を改行したい時に使う)
  • vbYes:メッセージボックスの「はい」ボタン
  • vbOKOnly:メッセージボックスの「OK」ボタン

▼使用例

MsgBox "メッセージ" & vbCrLf & "次の行に表示", vbOKOnly

▼関連記事

スポンサードリンク

定数を扱う際の注意点

途中で定数を変更できない

定数は変数と違い、プログラムの途中で値を変更することはできません。
下記のVBAコードを見てください。

Const TAX_RATE As Double = 0.1
TAX_RATE = 0.08 ' ← エラー
代入時のエラー

定数の宣言・代入をした次の行で、値を変更しようとしていますが、これはできません。
一度設定した定数の値は変更できないということを覚えておいてください。

定数に代入できるのはリテラルのみ

リテラルとは、「= 100」や「=”Utatane”」など「決まった値」のことをいいます。

Const CURRENT_YEAR As Integer = 2025 'リテラルを代入→OK

下記のように、場合によって変化する「関数の戻り値」などは代入できません。

Const CURRENT_YEAR As Integer = year(Date)
リテラル以外を代入した場合

この場合は、変数として扱う必要があります。

Dim current_year As Integer
current_year = year(Date)
スポンサードリンク

最後に

VBAの定数について解説いたしました。

当ブログでは、VBAマクロやPythonなど、時間を生み出すプログラミング術を公開しております。
この記事がわかりやすいと感じた方は、他の記事も読んでいってください。

最後までお読みいただき、ありがとうございました。がんばってください!

タイトルとURLをコピーしました