VBAのEnum
(列挙型)は、関連する定数をグループ化して扱う ための仕組みです。
数値の定数を名前付きで定義し、可読性を向上させたり、誤入力を防ぐのに役立ちます。
目次
1. Enumの基本構文
Enum 列挙名
メンバー名1 = 値
メンバー名2 = 値
メンバー名3 = 値
End Enum
- 列挙名(Enum名) は、グループの名前を表す
- メンバー名 には、それぞれ異なる値を割り当てる
- 値を省略すると、0から順に自動的に割り振られる
2. Enumの特徴
- 関連する定数を1つのグループとしてまとめられる
- コードの可読性が向上する(数値ではなく名前で管理できる)
- 誤った値の代入を防げる(定義済みの値しか使えない)
- プログラムの管理が楽になる
3. Enumの使用例
① 曜日をEnumで定義
Enum Weekday
'2
Sunday = 1 '以降は自動で+1される
Monday
Tuesday '3
Wednesday '4
Thursday '5
Friday '6
Saturday '7
End Enum
Sub TestEnum()
Dim today As Weekday
today = Wednesday ' Enum名を使って代入
MsgBox "今日は " & today & " 日目です。" ' "今日は 4 日目です。"
End Sub
※Sunday = 1
を指定すると、以降の値は自動的に+1 される
② ユーザー権限レベルをEnumで管理
Enum UserRole
Sub CheckRole()
Guest = 0
User = 1
Admin = 2
End Enum
Dim role As UserRole
role = Admin
If role = Admin Then
MsgBox "管理者権限です。"
End If
End Sub
数値でなく「Admin」と書けるので、可読性が向上!
※モジュールの上に書く必要があります。
(Enum
は モジュールレベル でのみ記述可能)
③ シートの列を管理
Enum SheetColumns
name = 1 '1列目
age
sex
End Enum
Sub ShowUserData()
Set ws = ActiveSheet
Debug.Print ws.Cells(3,name).Value
Debug.Print ws.Cells(3,age).Value
Debug.Print ws.Cells(3,sex).Value
End Sub
4. Enumを使うメリット
項目 | Enumを使う場合 | 数値を直接使う場合 |
---|---|---|
可読性 | role = Admin | role = 2 |
管理のしやすさ | 変更が容易 | 値の変更時に影響が大きい |
誤入力の防止 | 定義された値しか使えない | 間違った数値を入力する可能性あり |
5. Enumを使う場面
- あらかじめ決まった選択肢をリスト化したいとき
- コードの可読性を向上させたいとき
- 数値でなく、わかりやすい名前で管理したいとき
(例:シートの列を名前で管理したい)
6. まとめ
Enum
を使うと 関連する定数をグループ化して管理できる- 値を自動で連番にできるので、簡単に定義可能
- コードの可読性と管理性が向上
- 誤入力を防ぎ、バグを減らせる
数値を直接使うのではなく、Enumを活用して整理されたコードを書きましょう!
コメント