「VBAを使用していて、値が変わっては困るものを安心に扱いたいな...」
そのように思ったことはありませんか?

・変数では値が変わってしまう可能性があり心配
・変わることがなく、安心して使えるものはないの?



その場合は、VBAの「Resizeプロパティ」を
使用すると解決します!
この記事では、エクセルVBAの定数の使い方について詳しく説明します。
基本的な使い方から、メリット・デメリット、注意点まで、初心者でもすぐに実践できる内容です。
ぜひ最後までお読みください。
【 この記事の概要 】
よく使う度 | |
難しさ | |
覚えておくと安心度 |
この記事を見てできるようになること
この記事を読むことで、以下のことができるようになります。
- VBAで定数(Const)の使い方を理解し、実際に使用できるようになる
- 定数を使用することで、コードの可読性やメンテナンス性を向上させれるようになる
- 定数を使用する際の注意ポイントを理解し、トラブルを防ぐ
- 業務での実践的な定数の活用方法を学ぶ
VBAの定数 (Const) とは?
VBAにおける定数(Const)とは、一度設定すると変更できない値のことを指します。


定数を使用することで、コード内のハードコーディングされた値を一元管理でき、コードの読みやすさやメンテナンスのしやすさが向上します。
定数 (Const) と変数 (Variable) の違い
VBAでは、よく似たものとして「定数(Const)」と「変数(Variable)」という2つの異なるデータ保持方法があります。
これらの違いを理解し、使い分けることが重要になります。
値の変更 | 宣言方法 | 用途 | |
---|---|---|---|
定数(Const) | 変更不可 | Constキーワード | 変わらない値を保持する場合に使用 |
変数(Variable) | 変更可能 | Dimキーワード | 変わる可能性のある値を保持する場合に使用 |
変数については、別記事で解説を行っています。
合わせてご覧ください。


定数 (Const) の宣言方法
定数は、Constキーワードを使用して宣言します。


- Const
- 定数は、Constステートメントを使用して宣言します。
- 定数
- 任意の名前をつけることができます。
プログラム内でこの名前を使用してデータにアクセスします。
日本語の指定も問題ありません。
同じ適用範囲内で、同じ名前は使用することができません。
- 任意の名前をつけることができます。
- As
- 定数のデータ型を指定するために使用します。
指定しなければ、定数の型は Variant になります。
- 定数のデータ型を指定するために使用します。
- 定数の型
- 定数に格納するデータの種類を指定します。
詳細は、事項で解説を行います。
例えば、長整数型(Long)、文字列型(String)などがあります。
- 定数に格納するデータの種類を指定します。
- 値
- 定数に格納したい値を入力します。
以下の例では、実際に定数を宣言する方法を示します。
Const Tax_Rate As Double = 0.08
Const Max_Retries As Long = 5
Const Welcome_Message As String = "Welcome to VBA programming!"
上記のコードでは、「Tax_Rate」「Max_Retries」「Welcome_Message」という3つの定数がそれぞれ異なるデータ型で宣言されています。
より詳しい情報は、Microsoft公式 – Const ステートメントを参照してみてください。
定数の型の種類
定数では型を指定することで、格納するデータの種類を決定します。
定数の型は以下の通りです。
たくさんあり、最初は全部覚えるのは大変だと思います。
まず、黄色マーカーのものを覚え、あとは必要に応じて学習していくという方法で問題ありません。
型名 説明 Integer 整数型。
-32,768から32,767の範囲の整数を格納できます。Long 長整数型。
-2,147,483,648から2,147,483,647の範囲の整数を格納できます。Single 単精度浮動小数点型。
小数点を含む数値を格納できます。Double 倍精度浮動小数点型。
高精度の小数点を含む数値を格納できます。String 文字列型。
文字列を格納できます。Boolean 論理型。
TrueまたはFalseの値を格納できます。Date 日付型。
日付や時刻を格納できます。Currency 通貨型。
通貨値を格納できます。
小数点以下4桁までの数値を格納でき、通貨計算に適しています。Decimal 10進型。
10進数の値を格納でき、固定小数点計算に適しています。Variant 汎用型。
どの型のデータでも格納できますが、他の型よりもメモリを多く使用します。
また、変数の型を宣言しなければ、自動でVariantになります。
定数 (Const) を使用するメリット
定数を使用することで、コードがより読みやすく、メンテナンスがしやすくなります。
ここでは具体的なメリットを紹介します。
1. コードの可読性向上
定数を使用すると、意味のある名前を付けることができるため、コードが何をしているのかが一目で分かります。
例えば、消費税率「TaxRate」を定数に使用した例を見てみましょう。
Dim Price As Double
Dim Tax As Double
Price = 1000
Tax = Price * 0.08
このように消費税率「0.08」をコード内に直接書く場合、その数字が何を意味しているのか一目では分かりません。
Const TaxRate As Double = 0.08
Dim Price As Double
Dim Tax As Double
Price = 1000
Tax = Price * TaxRate
一方で、定数を使って「TaxRate」という名前を付けると、その意味が明確になります。
このように、定数を使用することでコードの意味が明確になり、保守やレビューがしやすくなります。
2. コードのメンテナンス性向上
定数を一元管理することで、値の変更が容易になります。
定数は一度設定すると変更が容易で、一箇所変更するだけで、コード全体に反映されます。
※定数を使用していないと、複数個所変更するのは大変ですよね。
Const TaxRate As Double = 0.08 '// 〇〇年〇月〇日 値を変更
もし定数を使わずに複数個所で「0.08」を直接使用していた場合、それらをすべて探し出して修正する必要があります。
Const TaxRate As Double = 0.10 '// 消費税率を10%に変更
一方、定数を使っている場合は、定数の値を一度変更すれば、コード全体に反映されるため、変更箇所を探す手間が省けます。
このように、定数を使うことでコード全体のメンテナンスが容易になります。
定数 (Const) のスコープ
VBAにおけるスコープとは、定数や変数がどこで使用できるかを決める範囲のことを指します。
定数をどこで宣言するかによって、その定数が使用できる場所が変わります。
スコープの設定は、プログラムの構造や設計に大きな影響を与えるため、適切なスコープを理解することが重要です。
モジュールレベルの定数
モジュールの先頭で宣言された定数の使用例を紹介します。
このようにモジュール内で宣言された定数は、
プロシージャ内で共通して使用することができます。
使用例のコードを次に記述します。


Const TaxRate As Double = 0.08
Sub Sample_Tax_1()
Dim Price As Long
Dim Tax
Price = 1000
Tax = Price * TaxRate
End Sub
Sub Sample_Tax_2()
Dim Price As Long
Dim Tax
Price = 5000
Tax = Price * TaxRate
End Sub
プロシージャレベルの定数
このようにプロシージャ内で宣言された定数は、
プロシージャ内でのみ使用することができます。
※別のプロシージャでは使用できません。
使用例のコードを次に記述します。


Sub Sample_Tax_1()
Const TaxRate As Double = 0.08
Dim Price As Long
Dim Tax
Price = 1000
Tax = Price * TaxRate
End Sub
定数を使用する場合の注意ポイントを解説
定数を使用するにあたって、注意するポイントが数点あります。
これらを守ることで、トラブルを未然に防ぐことができます。
- 定数は一度設定したら変更できない
- 定数は値を固定するため、後から変更することはできません。
プログラムの動作中に値を変更したい場合は、変数を使用してください。
定数は「固定値」として扱うべきもので、たとえば税率やエラーメッセージなど、常に同じ値が必要な場面にのみ使用しましょう。
- 定数は値を固定するため、後から変更することはできません。
- スコープの設定に注意
- 定数のスコープ(有効範囲)は宣言する場所によって異なります。
モジュールの先頭で宣言すれば、モジュール全体で使用できますが、プロシージャ内で宣言すると、そのプロシージャ内でのみ使用可能です。
適切な範囲で定数を宣言し、不要な部分でアクセスできないように管理しましょう。
⇒ スコープの解説についてもう一度見る
- 定数のスコープ(有効範囲)は宣言する場所によって異なります。
- 型を指定しない場合はVariant型になる
- 定数の型を明示的に指定しない場合、自動的にVariant型になります。
Variant型はメモリを多く使用するため、特別な理由がない限り、定数の型は明確に指定することが推奨されます。
型の指定により、コードの効率性やエラーの防止に役立ちます。
⇒ 定数の型の種類についてもう一度見る
- 定数の型を明示的に指定しない場合、自動的にVariant型になります。
- 定数の命名規則を守る
- 定数には一貫した命名規則を設けましょう。
定数名を見ただけで、それが定数であることがわかるように、たとえば「全て大文字+アンダースコア」形式など、明確なルールを定めておくと、コードの可読性が向上します。
- 定数には一貫した命名規則を設けましょう。
定数 (Const) の使用例について
実際の業務でVBAの定数を活用する方法について、具体的な例をいくつか紹介します。
以下に紹介する使用例は、すべてコピペしてすぐに実行できるコードです。
気になる例は、ぜひご覧いただき、実際に実行してみてください。
VBAの基礎から応用までを効率よくしっかり学習したい方には、UdemyのVBA講座もおすすめです。
特に自己学習で進める場合、ビデオや実践例があると理解が進みやすくなります。


\ 自分のペースで学べるVBA講座はこちら /
【 使用例目次 】
使用例1:定数でファイルパスを管理する
複数のプロシージャで同じファイルパスを使用する場合、定数を使うことで管理が容易になります。
Const FILE_PATH As String = "C:\新しいパス\新しいファイル名.xlsx"
Sub OpenReport()
Workbooks.Open FILE_PATH
End Sub
Sub SaveReport()
ThisWorkbook.SaveAs FILE_PATH
End Sub
このコードで使用している機能
1行ずつコードを解説
「クリック」してコードの詳細解説を見る
- Const FILE_PATH As String = “C:\新しいパス\新しいファイル名.xlsx”
- この行では、定数「FILE_PATH」を宣言しています。
「Const」は定数を宣言するキーワードで、一度設定された値を後から変更できません。
ここでは「String (文字列型)」の定数として、パス(”C:\新しいパス\新しいファイル名.xlsx”)を保持しています。
定数を使うことで、プログラム全体でこのパスを使い回しつつ、誤って変更されるリスクを防ぐことができます。
- この行では、定数「FILE_PATH」を宣言しています。
- Sub OpenReport()
Workbooks.Open FILE_PATH
End Sub- このブロックでは、「OpenReport 」というサブルーチンを定義しています。
サブルーチン「Sub」は、特定の処理をまとめて実行するコードの塊です。
「Workbooks.Open」は指定されたパスのファイルを開くためのメソッドで、引数として定数「FILE_PATH」を渡しています。
これにより、先ほど設定したパスにあるExcelファイルが開かれます。
- このブロックでは、「OpenReport 」というサブルーチンを定義しています。
- Sub SaveReport()
ThisWorkbook.SaveAs FILE_PATH
End Sub- このブロックでは、「SaveReport」というサブルーチンを定義しています。
ThisWorkbook は、現在のExcelファイル(コードが実行されているブック)を指し、「SaveAs」メソッドを使って保存する処理を行います。
定数「FILE_PATH」に指定されたファイル名で保存します。
これにより、プログラムの中で同じ場所に保存する処理が一貫して行われます。
- このブロックでは、「SaveReport」というサブルーチンを定義しています。
このコードは、定数「FILE_PATH」に設定されたパスを使用して、Excelファイルの開閉や保存を行います。
定数を使うことで、ファイルパスを統一管理し、誤って変更されるリスクを防いでいます。
使用例2:エラーメッセージの統一化
エラーメッセージを定数として宣言し、コード内で一貫して使用することで、メッセージの変更が容易になります。
Const ERROR_MESSAGE As String = "An unexpected error has occurred."
Sub ExampleProcedure()
On Error GoTo ErrorHandler
'// コード本体
Exit Sub
ErrorHandler:
MsgBox ERROR_MESSAGE
End Sub
このコードで使用している機能
- Error (エラー処理)
1行ずつコードを解説
「クリック」してコードの詳細解説を見る
- Const ERROR_MESSAGE As String = “An unexpected error has occurred.”
- この行では、定数「ERROR_MESSAGE」を宣言しています。
定数は、一度設定した値を変更できない変数のようなものです。
この定数には、エラーメッセージとして「An unexpected error has occurred.」(予期しないエラーが発生しました)という文字列が設定されています。
このように定数を使うことで、コード全体で統一されたメッセージを使用でき、後で変更が必要になった場合もこの1か所を変更するだけで済むため、メンテナンスが容易になります。
- この行では、定数「ERROR_MESSAGE」を宣言しています。
- Sub ExampleProcedure()
- ここでは、新しいサブルーチン「ExampleProcedure」を定義しています。
サブルーチンは、一連の処理をまとめたコードのブロックです。このサブルーチンが呼び出されると、中に書かれた処理が順番に実行されます。
- ここでは、新しいサブルーチン「ExampleProcedure」を定義しています。
- On Error GoTo ErrorHandler
- この行は、エラーハンドリングの設定を行っています。
もしこのサブルーチン内でエラーが発生した場合、コードの実行は通常の流れを中断し、指定されたラベル「ErrorHandler」にジャンプします。
これにより、エラーが発生した際の処理をまとめて実行することが可能になります。
- この行は、エラーハンドリングの設定を行っています。
- ‘// コード本体
- この場所にメインの処理を記述してください。
- Exit Sub
- この行は、サブルーチンの処理を途中で終了させる命令です。
通常の流れでは、この行が実行されると、 サブルーチン「ExampleProcedure」はここで終了し、その後の処理は行われません。
つまり、Exit Sub に到達した時点でサブルーチンは停止し、プログラムの次の命令があれば、別のサブルーチンやプロシージャに移ることになります。
エラーが発生しなければ、この行で「ExampleProcedure」は終了します。
- この行は、サブルーチンの処理を途中で終了させる命令です。
- ErrorHandler:
- これはエラーハンドリングのためのラベルです。
もしこのサブルーチン内でエラーが発生すると、前述の「On Error GoTo ErrorHandler」によって処理がこのラベルの場所にジャンプします。
このラベル以降の行には、エラー発生時に実行される処理が書かれています。
- これはエラーハンドリングのためのラベルです。
- MsgBox ERROR_MESSAGE
- この行では、MsgBox関数を使用してメッセージボックスを表示します。
表示されるメッセージは、最初に宣言した定数「ERROR_MESSAGE」の値、つまり「An unexpected error has occurred.」です。
このメッセージボックスは、エラーが発生したことをユーザーに知らせるために使用されます。
- この行では、MsgBox関数を使用してメッセージボックスを表示します。
- End Sub
- この行は、サブルーチンの終了を示します。
ExampleProcedure サブルーチンの処理がすべて完了したことを示し、プログラムは次の処理に進みます。
エラーハンドリングが行われた場合も、ここでサブルーチンが終了します。
- この行は、サブルーチンの終了を示します。
このコードは、定数「ERROR_MESSAGE」を使用して、エラーが発生した際に一貫したエラーメッセージを表示する仕組みを作成しています。
「On Error GoTo」によりエラー発生時に「ErrorHandler」にジャンプし、定数で定義されたメッセージをメッセージボックスで表示します。
これにより、エラー処理が統一され、管理が簡単になります。
この記事のまとめ
の記事では、VBAにおける定数の基本的な概念、使用方法、宣言方法について詳しく説明しました。
定数を使うことで、コードの可読性やメンテナンス性が大幅に向上させることができます。
ポイントのおさらい
- 定数の基本を理解する
- 定数は、一度設定すると変更ができない固定された値のことを指します。
変数と違い、変更される心配がないため、安心して使用できます。
⇒ 「定数(Const)とは?」もう一度見る。
- 定数は、一度設定すると変更ができない固定された値のことを指します。
- 定数の宣言方法を確認する
- 定数は「Const」キーワードを使って宣言します。
変数と違い、定数の値は後から変更することができません。
⇒「定数の宣言方法」もう一度見る。
- 定数は「Const」キーワードを使って宣言します。
- 定数のメリットを確認する
- 定数を使用することで、コードの可読性が向上し、変更箇所が少なくなるため、メンテナンスがしやすくなります。
⇒ 「定数を使用するメリット」もう一度見る。
- 定数を使用することで、コードの可読性が向上し、変更箇所が少なくなるため、メンテナンスがしやすくなります。
- 定数のスコープを理解する
- 定数のスコープ(有効範囲)は宣言する場所によって異なり、モジュール全体やプロシージャ内で使用可能な範囲が決まります。
⇒ 「定数のスコープ」もう一度見る。
- 定数のスコープ(有効範囲)は宣言する場所によって異なり、モジュール全体やプロシージャ内で使用可能な範囲が決まります。
- 注意ポイントを確認する
- 定数は一度設定すると値を変更できません。
また、定数の型を指定しない場合は自動的にVariant型となり、メモリ使用量が多くなるため、特に意識して型を指定することが重要です。
⇒ 「定数を使用する場合の注意ポイント」もう一度見る。
- 定数は一度設定すると値を変更できません。
- 具体的なコード例を学ぶ
- 定数を使用することで、コード内の値を一元管理し、可読性とメンテナンス性が向上します。
⇒「定数の使用例」もう一度見る。
- 定数を使用することで、コード内の値を一元管理し、可読性とメンテナンス性が向上します。
さらに学ぶために
定数の使用に慣れたら、次のステップとして他のトピックも学びましょう。
特に、VBAの関数やエラーハンドリングの組み合わせで、定数を使う場面は増えていきます。
今回の記事を参考に、VBAでの定数の使用方法をマスターし、コードの品質とメンテナンス性を向上させましょう。

