変数と定数って何が違うの?


変数と似た仕組みに定数があります。定数とは、任意の数値や文字に、別名を付けるようなものです。

定数を定義するには、Constステートメントを使います。次のコードは、数値の100を定数MaxCountとして定義します。

Sub Sample59()
    Const MaxCount As Long = 100
    If Range("A1") > MaxCount Then
        MsgBox "範囲を超えています"
    Else
        MsgBox "範囲内です"
    End If
End Sub

もちろん、これは変数を使って次のように書くことも可能です。

Sub Sample59()
    Dim MaxCount As Long
    MaxCount = 100
    If Range("A1") > MaxCount Then
        MsgBox "範囲を超えています"
    Else
        MsgBox "範囲内です"
    End If
End Sub

変数と定数の違いは、次の通りです。

  • 変数はコード中に何度でも別の値を格納できる
  • 定数はコード中に定義した値を変更できない

一度定義した定数は、途中で値を変更することはできません。

  • 変数は宣言時に初期化できない
  • 定数は宣言時に初期化しなければならない

VBAでは、一般的に

Dim buf As Long = 100

のように、変数の宣言時に初期化することはできません。一方、定数は

Const Buf As Long
Buf = 100

という書き方はできません。コード中は定数に値を格納することができないからです。そこで、定数では、宣言時に値を確定させます。

変数と定数のどちらを使うかに、厳密なルールはありません。しかし、定数の性質上コード中で変更されない値であり、別名を付けた方が可読性が高まるようなケースでは、変数ではなく定数を使うといいでしょう。