VBA講義室 > 定数・変数 > 定数とは
定数とは
定数は固定値を入れておく箱。
金銭貸借契約書でよく見られる表現を例にすると、判りやすい。
(住所)
貸主(甲) ○山×夫
(住所)
借主(乙) □川△子
(住所)
連帯保証人(丙) ▽田◇夫
などと契約書の冒頭に表現されているのをご存知だと思う。そして契約本文では
第1条 甲は平成一七年二月一日金弐拾万円を渡し、乙はこれを受け取り借用した。
というように、「甲」「乙」「丙」などと簡潔に表現されているものが多い。
これは次のようなことを意図している。
- 同じフォーマットを少ない記入で使いまわすことが出来る。
- 変更は冒頭のみで行うことが出来るので、間違いが少ない。
- 契約書本文に何箇所も同じ名前を記入する必要がない。
「甲は○山×夫ですよ」というのを冒頭に明記しておけば、何箇所も「○山×夫」を書かなくてもすむのである。「甲」は「○山×夫」の「代わり」として本文中で使われる。プログラムにおける定数という概念もこれとほぼ同じことを意図して使用される。
このように、固定値を何度もプログラム中に使用する場合に、これを直接使用せず、代わりの名前をつけて使用するものを定数と呼ぶ。
定数使用で効果的なのは次のような値。
- 単なる数値ではなくて名前で表したほうが判りやすくなるもの
- プログラム中で何度も使用される値
大規模なプログラムである場合、単なる数値を直接構文中に使うよりもその数値の根拠を示すような名前をつけた定数を使用したほうが、後でチェックしやすい。また、プログラムのメンテナンスの問題で、同じ値を直接構文で何度も使用しており、値の変更に迫られた場合は全て直接変更しなければならない。定数を冒頭で宣言しておけば、変更は一箇所で済み、変更すべき箇所も明確。
定数はあらかじめその宣言を行ってから使用する。
定数の宣言にはConstステートメントを使用する。
[適用範囲] Const 定数名 [As データ型] = 値
- 適用範囲
- 省略可能。定数が適用される範囲をPublic、Privateで指定。
- 定数名
- 必ず指定する。名前付けの規則にしたがって指定する。(後述)
- データ型
- 省略可能。定数に格納するデータのタイプをAsキーワードの後に続けて指定する。省略した場合は実際に格納する値によって最適なデータ型が自動的に割り当てられるが、なるべくデータ型を規定する。
- 値
- 固定値として代入する数値や文字列などを指定する。文字列、数値、他の定数、及び演算子を利用した式が利用できる。
定数名は次の基準を満たすものであること。
- 半角全角英数字、漢字、ひらがな、カタカナ、「_(アンダースコア)」を使用できる。
- 名前の先頭に半角全角数字、「_(アンダースコア)」を使用することは出来ない。
- 英字では大文字、小文字は区別されない。
- 半角255文字(すべて全角では127文字)以内
- VBAですでに定義されているプロパティ名、メソッド名、関数名、組み込み定数名は使用できない。
- 同じ適用範囲で同じ名前の定数は利用できない。
定数の「適用範囲」とは、その定数を利用できる範囲のことである。宣言を行う場所により定数の適用範囲が変わってくる。
・プロシージャレベル
プロシージャ内で宣言した場合は常にそのプロシージャ内だけが適用範囲となる。
・モジュールレベル
モジュール先頭部分(どのプロシージャよりも上方)は宣言セクションと呼ばれる部分。宣言セクションで宣言を行い、適用範囲にPrivateを指定するとモジュールレベルの定数として扱われる。適用範囲を省略した場合もPrivateを指定したものとみなされる。この場合は同じモジュール内のどのプロシージャからでも利用できる。
・プロジェクトレベル
標準モジュールの宣言セクションで宣言を行い、適用範囲にPublicを指定すると同じプロジェクトのどのモジュールからでも使用することが出来る。
宣言を行う場所は基本的にそれらを使用する前であればどこでもよい。
しかし、さまざまな場所に宣言が書いてあると読みにくいコードになる。
そのため、モジュール先頭部分(宣言セクション)やプロシージャ先頭部分へなるべくまとめて宣言する。
前(定数・変数) 目次 次(変数とは)