-
∨目次
- 定数を宣言する
- 定数のスコープ
- 定数を使う理由
- Enum
VBA 定数
はじめに
Excel VBA マクロの定数の使い方を紹介します。
定数は値に名前を付けられます。一度設定すると値を変更できなくなります。
Const キーワードで定数を宣言できます。値に関数の戻り値やオブジェクトは使用できません。
- 基本的な動作は変数と同じなので、先に「変数」をご覧ください。1 度しか値を設定できないのが定数です。
-
目次
- 定数を宣言する
- 定数のスコープ
- 定数を使う理由
- 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 にはありません。
- 型について詳しくは「データ型」をご覧ください。
定数のスコープ
定数のスコープも基本は他と同じです。
Public Const パブリック As Integer = 1 ' Public は標準モジュールにのみ宣言できる
Private Const プライベート As Integer = 2
Const 省略 As Integer = 2 ' 省略したときは Private になる
Sub 実行()
Const ローカル As Integer = 3
End Sub
Public で宣言できるのは標準モジュールのみです。Sheet1 などのクラスに宣言するには Private にする必要があります。
一般的に定数は Public でよく使われます。
- 詳しくは「スコープ」をご覧ください。
定数を使う理由
次のように定数名を付けることで、意味のない値が最大値であったり、誕生日であることがわかります。
Public Const MAX As Integer = 100
Public Const 誕生日 As Date = "2000/12/31"
最大値が 100 であるものをコードの何か所にも直接 100 と入力すると、間違って入力することもあります。他の 100 の値と区別がつかなくなります。 変数に 100 を入れてもどこかで変更されるかもしれません。
このような問題を定数を使えば解決できます。単なる値に意味のある名前を付けられ、コードを理解しやすくなります。
Enum
Long 型固定ですが、定数をグループ化できる Enum (列挙型) があります。
- 詳しくは「列挙型 Enum」をご覧ください。
スポンサーリンク