今回はExcelVBAの「定数」について。
定数と変数って何が違うの?
[/word_balloon]どんな時に定数って使うの?
[/word_balloon]すごく基本的なことにはなりますが、初心者の方にとってはしっかり押さえておきたいポイントです。
定数と変数、しっかり理解して、使い分けできるようにしておきたいものです。
定数とは
定数を使うためには、定数を宣言する必要があります。
変数では「Dim」を使いましたが、定数では「Const」を使います。
また、定数は文字通り「定められた」もの、つまり処理中は変更しないものを指します。
一方、変数は「Dim」で宣言した後、中身が必要に応じて、どんどん変わっていきます(変えることができます)。
定数と変数、何が違うかというと…
- 定数は「定められた」もの
- 変数は「変わっていく」もの
定数を宣言する
定数は下のように宣言します。
Const[定数名] As [データ型] = [値]
変数は「Dim」を使いましたが、定数は「Const」を使います。
データ型を宣言するところは変数と同じですが、定数では最初から値を決める必要があります。
ローカルとグローバルを使い分ける
変数と同様、ローカルの場合はConstの前に「Private」を付けます。
「Private」は省略できますので、Constの前に何も付けなければ「Private」で宣言したのと同じ意味になります。
また、グローバルの場合は、これまた変数と同様、Constの前に「Public」を付けます。
ローカルとグローバルについては、スコープの話しになってきますので、これについてはまたの機会に解説したいと思います。
定数はどんな時に使う?
定数は処理の途中で中身を変えませんので、そのことを前提で使っていく必要があります。
例えば、消費税率ですとか、残業の割増賃金率やら、割引率などなど、開発するツールによって、さまざまな使い道が考えられます。
メンテナンスのしやすさを考慮して定数は使っていきましょう。
定数の値を修正すれば、同じ定数を使った箇所は全て変更可能になる。
これがメンテナンスのしやすさを考慮したプログラミングです。
Public Const TAX_RATE As Double = 1.1
Public Const PREMIUM_RATE As Double = 1.25
Public Const DISCOUNT_RATE = 0.8
ちなみに、定数は半角英数大文字で宣言しましょう。
このように区別しておけば、定数だとすぐに判断できますし、誰が見ても読みやすいコードになります。
私は、メンテナンスしやすさを考えて、セルの番地を定数で宣言したことがあります。
もし、定数で宣言しなければ、シートのレイアウトが変更になった時にコードから変更したセル番地を探し出して、一つずつ変更していかなければなりません。
セルの番地を定数で宣言しておけば、レイアウト変更があっても、定数の値を変えるだけで済みます。
Public Const SAMPLE_VALUE As String = "A1"
(省略)
ThisWorkbook.Sheet("Sample").Range(SAMPLE_VALUE).Value = "テスト"
(省略)
ThisWorkbook.Sheet("Sample").Range(SAMPLE_VALUE).Offset(0,1).Value = "定数の使い方"
例えば上のようなコードがあったとします。
レイアウトの変更などでセル番地「A1」を変える必要が出てきた場合、定数SAMPLE_VALUEの値を変えるだけで、対応できてしまいます。
定数SAMPLE_VALUEが宣言されていなければ、セル番地「A1」を使っているコードを探し出し、一つずつ変更する必要性が出てくるのです。
定数を使う時は、メンテナンスのしやすさを考えることがとても重要です。
初心者のうちは、なかなかメンテナンスのことを考えてコーディングすることは難しいかもしれませんが、慣れていくしかありません。
今回は、定数について解説しましたが、少しでも皆さまの事務作業の効率化のお手伝いができれば幸いです。