Excel VBAの定数について
この記事では定数について学びます。「定まった数」という名前のある通り、定数は後からその値を変更できない特徴があります。変数と定数をメリハリを付けて使い分けることで、ミスを減らし、読みやすいコードを書くことが可能となります。
定数の書き方
定数の書き方はこちらです。Constは英語で定数を意味する言葉であり、「これから宣言するのは定数ですよ」とプログラムへ伝える役割を果たしています。
Const 定数名 As データ型 = 値
具体的な使用例はこちらです。消費税を定数TAXとして宣言しました。
Const TAX As Double = 1.08
消費税は何度も変更があるモノではないので定数として宣言してみました。通常の変数と区別するため、定数は全て大文字で書かれることも多いです。
変数と定数の使い分け
変数と定数をメリハリを付けて使い分けることができるようになると便利です。正直わざわざ定数を使わなくても変数だけで全てコードを書くことはできます。ただ全てを変数だけで書いていると「どれが大事な変数か?」がわからなくなってしまいます。
コードを読み解く際にも、変数だけだとすごく読むのが疲れます。変数はその名の通り「変化する数」であり、プログラムのどこかで変わる可能性のある数です。つまりその変数は「値が変わるかもしれない可能性」を気にしながらコードを読む必要があります。気にするモノが増えれば増えるほどコードを読み解くのは大変に宇なっていきます。
定数のあるコード/ないコード
例えば単純に合計金額を計算するプログラムで比較してみます。
Dim VBA_BOOK = 1000;
Dim TAX = 1.08;
Dim numBook = 5;
Dim totalMount = 0;
これらの中で変わる数と変わらない数はどれでしょうか?全てが変数(変わる数)として扱われているので、読み解くのが非常にしんどいです。結局はnumBook(本の冊数)とtotalMount(合計金額)しか変わらないので、他の2つについては注意を払う必要はありませんよね。今回は短い例なので問題ないかもしれませんが、コードが長くなった時に頭の中で考慮すべき変数が増えると大変です。また変数として結果を変えたかったモノ以外にも、ExcelProの金額や消費税率を変更してしまうかもしれません。
では逆に定数を使って書き換えたのがこちらです。どうでしょうか?変数と定数がメリハリを付けて宣言されているので、こちらの方が読みやすいと思いませんか?
Const VBA_BOOK As LONG = 1000;
Const TAX As Double = 1.08;
Dim numBook = 5;
Dim totalMount = 0;
コードの中で定数があるだけでもすごく目立ちますよね。「これは定数なんだな」と読み解く人によってもすごく良いヒントになりますし、値が後々変わるかもしれないことを考慮すべき箇所が減ります。「変数が増える」=「頭の中でジャグリングするピンが増える」ことと同じなので、考慮すべきモノが増えるのは読む人にとっても書く人にとっても負担となります。
コードを書いている際には定数を使える部分にはなるべく定数を使ってみて下さい。そうするとメリハリの付いたより綺麗なコードが書けるのではないかと思います。
Discussion