サイトについて      連絡先   検索

VBA 定数

はじめに

Excel VBA マクロの定数の使い方を紹介します。

定数は値に意味のある名前を付けられ、一度設定すると後から値を変更できなくなります。

Const キーワードで定数を宣言できます。

  • 目次
    • 定数を宣言する
    • 定数のスコープ
    • 定数を使う理由
    • Enum

定数を宣言する

Const 定数名 As 型名 = 値のように入力します。Const が定数を宣言するキーワードです。


Const サイト名 As String = "Tipsfound"
Const MAX As Integer = 100
Const 誕生日 As Date = "2000/12/31"

定数は宣言するときだけ値を設定できます。その後は値を変更できません。このため「定数」と言います。


Sub 実行()
    Const 定数 As String = "Tips"
    定数 = "found" ' エラー、定数の値は変更できない
End Sub

有効範囲の最大値やシステムで決められている値など、動的に変更されることのない値を定数にします。

代入できる値

定数には数値、文字列、日付などの値型のみ設定できます。クラスや構造体や Enum や配列などを型として使用できません。Function 関数の戻り値も値として代入できません。


Const 文字列 As String = "文字"
Const 日付 As Date = #3/30/2013#
Const 数値1 As Integer = 100
Const 数値2 As Integer = VbMsgBoxResult.vbOK ' Enum を値としてなら代入できる

Const 数値3 As Integer = 関数名               ' エラー、関数の戻り値を値に指定できない
Const 列挙型 As VbMsgBoxResult = VbMsgBoxResult.vbOK ' エラー、Enum を型に使用できない
Const クラス As Object = Range("A1")          ' エラー、オブジェクトを型に使用できない

他のプログラミング言語にある ReadOnly (読み取り専用) は VBA にはありません。

定数のスコープ

定数のスコープも基本は他と同じです。


Private Const プライベート As Integer = 1

Sub 実行()
    Const ローカル As Integer = 2
End Sub

ただし Public な定数は標準モジュールにのみ宣言できます。


' 標準モジュールのコード
Public Const パブリック As Integer = 3

一般的に定数は Public でよく使われます。

定数を使う理由

次のように定数名を付けることで、意味のない値が最大値であったり、誕生日であることがわかります。


Public Const MAX As Integer = 100
Public Const 誕生日 As Date = "2000/12/31"

最大値が 100 であるものをコードの何か所にも直接 100 と入力すると、間違って入力することもあります。他の 100 の値と区別がつかなくなります。 変数に 100 を入れてもどこかで変更されるかもしれません。

このような問題を定数を使えば解決できます。単なる値に意味のある名前を付けられ、コードを理解しやすくなります。

Enum

Long 型固定ですが、定数をグループ化できる Enum (列挙型) があります。

  • 目次
    • 定数を宣言する
    • 定数のスコープ
    • 定数を使う理由
    • Enum