- まず列挙型を宣言します。それには、「Declarations」セクションに「Enum 任意の列挙型名 〜 End Enum」でくくって、それぞれのメンバーを「任意の定数名 = その値」という式で列挙します。
Option Compare Database
Option Explicit
Enum Pos
Director = 10 '部長
Manager = 20 '課長
Chief = 30 '係長
Leader = 40 '班長
General = 50 '一般
Trainee = 55 '研修
End Enum
- どこかのプロシージャにおいて、上記で宣言した「列挙型名」(ここでは”Pos”)、それに続いて「.」をキーインしてみます。
それによってメンバーがリスト表示されますので、いずれかを選択することでその定数名をコードとして入力することができます。
プログラム例:
Sub EnumTest1()
Debug.Print Pos.Director
Debug.Print Pos.Manager
Debug.Print Pos.Chief
Debug.Print Pos.Leader
End Sub
実行例:
またここでは次のような記述もできます。
Debug.Print Director
Debug.Print Manager
Debug.Print Chief
Debug.Print Leader
MsgBox関数で定数が”vb”という文字で始まっているように、他とバッティングしないようなユニークなメンバー名にして、このような列挙型名を省略したスタイルの方が楽かもしれません。ただしそうでない場合は列挙型名も明示した方が確実です。
- 列挙型はプロシージャの引数の型としても利用することができます。
次の例では「GetPosName」というプロシージャを作り、”Position”という名前で”列挙型の引数”を宣言しています。
Function GetPosName(Position As Pos) As String
Dim strRet As String
Select Case Position
Case Pos.Director
strRet = "部長"
Case Pos.Manager
strRet = "課長"
Case Pos.Chief
strRet = "係長"
Case Pos.Leader
strRet = "班長"
Case Pos.General
strRet = "一般"
Case Pos.Trainee
strRet = "研修"
End Select
GetPosName = strRet
End Function
そして、そのプロシージャを呼び出すコードを書いてみます。するとその引数を入力する位置にきたときにやはり列挙型のメンバーが表示され、そこからいずれかを選択することができます。
プログラム例:
Sub EnumTest2()
Debug.Print GetPosName(Director)
Debug.Print GetPosName(Manager)
Debug.Print GetPosName(Trainee)
Debug.Print GetPosName(General)
End Sub
実行例: