【Excel VBA】Enum(列挙型)の使い方

Enumは複数の整数値の定数をまとめて定義する機構です。

目次

Enumを定義する

Enumの定義は宣言セクションに記述します。構文は次のとおりです。

Enum Enum名
    メンバ名1 [= 定数式]
    メンバ名2 [= 定数式]
    メンバ名3 [= 定数式]
    ...
End Enum

Enum名やメンバ名には任意の名前を付けられます。「= 定数式」は省略可能ですが、記述する場合はLong型に評価される式でなければなりません。

Enum myEnum
    foo = 2
    bar = 4
    baz = 8
End Enum

値の代入は省略することが出来ます。省略すると最初のメンバは0、その後のメンバは直前の値に1だけ増加した値が自動的に割り当てられます。

Enum myEnum
    foo       ' 0
    bar       ' 1
    baz       ' 2
End Enum

一部のメンバだけに値を代入することもできます。値の代入を省略したメンバには、やはり直前の値に1増加した値が自動的に割り当てられます。

Enum myEnum
    foo       ' 0
    bar = 10  ' 10
    baz       ' 11
End Enum

このようにEnumはメンバの値の割り当てをプログラムに任せることが出来るので、コーディングミスを減らすことが出来ます。また自動割り当てを利用していれば、メンバを追加するのも簡単です。

Enum定義のポイント
  • Enumの定義は宣言セクションに記述する。
  • メンバはLong型に評価される値で初期化する。
  • メンバの初期化を省略した場合、最初のメンバは0が割り当てられる。
  • 2番目以降のメンバの初期化を省略した場合は、直前の値に1増加した値が割り当てられる。
  • 初期化された値は実行時に変更はできない。

Enumのメンバを参照する

メンバの値を参照するには次のようにします。

Enum名.メンバ名

前述の最後の例のメンバの値を確認してみます。次のコードはイミディエイトウィンドウにメンバの値を表示します。

Enum myEnum
    foo       ' 0
    bar = 10  ' 10
    baz       ' 11
End Enum

Sub sample()
    Debug.Print myEnum.foo
    Debug.Print myEnum.bar
    Debug.Print myEnum.baz
End Sub

まとめ

Enumは値を自動的に割り当てたり、定数をグループ化するのに役立ちます。ぜひ使ってみてください。

よかったらシェアしてね!
  • URLをコピーしました!
目次