Enum

「列挙型」と呼ばれるEnumはVBAにもある。
Enum <名前>
<要素1>
<要素2>
・・・
End Enum
特に指定しないと最初の要素は0の値となり、次の要素は1、次の要素は2と一つづつ値が大きくなっていく。
Enum a
full_name
age
End Enum
という風に書く。
この例ではfull_name=0、age=1となる。
ここで
Enum a
full_name =  1
age
End Enum
のように値を指定することもできる。
参照するには
Debug.Print a.full_name
のように書けば良い。
また、一つのグループだけしかない場合は
Debug.Print full_name
でも同じになる。(ただし定義文のほうは省略不可)

これにも変数同様のスコープがあるので注意が必要。
指定しないとPublicになるので、プロシージャや関数の外に書くと他のモジュールからも見えてしまう。
変数同様にPrivate Enum ・・・と言う風に書けば良い。
困ったことにこの名前は“予約語”とも衝突する。
まあ、これはエディタの問題というべきかもしれないが、この制限で名前付けが意外と面倒臭い
上記でいえばnameとしようとしても、予約語のNameと衝突して名前が勝手にNameになってしまう。それでも別に予約語のNameの値(?)が引用されるわけではないのではあるが、気持ち悪い。
-