内容の変わらないデータは「定数」に代入しよう

基礎から始めるVBA VBA

シリーズ前回までの内容で変数について学んできました。

今回は変数と似て非なる「定数」についての話です。

前回記事はこちら

「定数」は中身の変化しない箱

変数とは、プログラム上に用意された「ラベル付きの箱」のような存在でした。

定数もまた「ラベル付きの箱」なのですが、定数はいったん物を入れたら開けられないようカギがかかってしまう箱なのです。

定数に格納された値は変更することはできません。

タナイ
タナイ

値を変更できないのに、わざわざ定数を使う意味はあるの?と考えた人もいるでしょう。定数を使うと人間には意味不明の数字に意味を与えられるというメリットがあるんです。

例えば、1543000という数字があったとします。これは実はある会社の1か月分の予算です。

この1543000というデータをmonthlyBudgetという名前の定数に代入すると、ただの数字の羅列であった1543000の意味がはっきりします。

VBAプログラミングのどこかで予算を参照したいとき、1543000よりも定数名monthlyBudgetを使った方がプログラムの意味が分かりやすくなりますし、入力ミスも防げます。

また途中で予算に変更があった場合、すべての数字を修正するのではなく最初の定数に格納する値のみを修正すればよいことになります。

タナイ
タナイ

定数を使えば変化に強いプログラムを作ることができるのです。

定数の作り方

変数を宣言して使ったように、定数もユーザー側で定義して使う必要があります。

const 定数名 as 定数に入れたいデータの型(種類) = 定数に格納する値

以下の変数宣言と見比べてみましょう。

Dim 変数名 As 変数に入れたいデータの型(種類)

先頭がDimとConstで違っています。また定数の場合、宣言するときに定数の値を決めている点が特徴です。

タナイ
タナイ

データの型は変数も定数もほとんど同じ種類のものが使えます。ただし、オブジェクト型は定数宣言には使えません。

実際に定数を使ってみよう

では、実際に定数を使ってプログラムを書いてみましょう。

次のような表で、A、B、Cの得点と平均点の差を求めるプログラムを作ります。

平均点55をAvgという定数に格納し、3人の得点との平均点を求めてC列に入力していきます。

Sub CalculateAverageDifference()

    Const Avg As Long = 55
    
    Dim WS As Worksheet
    Set WS = Worksheets(1)
    
    WS.Range("C2").Value = WS.Range("B2").Value - Avg
    WS.Range("C3").Value = WS.Range("B3").Value - Avg
    WS.Range("C4").Value = WS.Range("B4").Value - Avg

End Sub

結果は以下のように表示されます。


仮に平均点が変化したとしてもAvg宣言時のプログラムを一行修正するだけで済むので非常に便利ですね。

コメント

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