VBAのEnum(列挙型):定数をグループ化して管理する方法

VBAのEnum(列挙型)は、関連する定数をグループ化して扱う ための仕組みです。
数値の定数を名前付きで定義し、可読性を向上させたり、誤入力を防ぐのに役立ちます。


1. Enumの基本構文

Enum 列挙名
メンバー名1 = 値
メンバー名2 = 値
メンバー名3 = 値
End Enum
  • 列挙名(Enum名) は、グループの名前を表す
  • メンバー名 には、それぞれ異なる値を割り当てる
  • 値を省略すると、0から順に自動的に割り振られる

2. Enumの特徴

  • 関連する定数を1つのグループとしてまとめられる
  • コードの可読性が向上する(数値ではなく名前で管理できる)
  • 誤った値の代入を防げる(定義済みの値しか使えない)
  • プログラムの管理が楽になる

3. Enumの使用例

① 曜日をEnumで定義

Enum Weekday
Sunday = 1 '以降は自動で+1される
Monday
'2
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
Guest = 0
User = 1
Admin = 2
End Enum

Sub CheckRole()
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 = Adminrole = 2
管理のしやすさ変更が容易値の変更時に影響が大きい
誤入力の防止定義された値しか使えない間違った数値を入力する可能性あり

5. Enumを使う場面

  • あらかじめ決まった選択肢をリスト化したいとき
  • コードの可読性を向上させたいとき
  • 数値でなく、わかりやすい名前で管理したいとき
    (例:シートの列を名前で管理したい)

6. まとめ

  • Enum を使うと 関連する定数をグループ化して管理できる
  • 値を自動で連番にできるので、簡単に定義可能
  • コードの可読性と管理性が向上
  • 誤入力を防ぎ、バグを減らせる

数値を直接使うのではなく、Enumを活用して整理されたコードを書きましょう!

コメント

タイトルとURLをコピーしました