ray88’s diary

お仕事で困ったとき用の自分用の覚書

VBA 列挙型・Enumステートメント

■列挙型
 数値を列挙して独自の型のように利用できる。
 定数の一種でLong型の値を割り当てることができる。
 Enumステートメントを使用して定義する。
【サンプルコード①】

Option Explicit
'色番号を定数化
Enum ColorNumber
    Red = 3
    Green = 4
    Yellow = 5
    Blue = 6
End Enum

Sub PaintCell()
'セルに背景色をつける
    With Sheets("Sheet1")
        .Range("C2").Interior.ColorIndex = ColorNumber.Red
        .Range("C3").Interior.ColorIndex = ColorNumber.Green
        .Range("C4").Interior.ColorIndex = ColorNumber.Yellow
        .Range("C5").Interior.ColorIndex = ColorNumber.Blue
    End With
End Sub

f:id:ray88:20210505191528p:plain
【サンプルコード②】

Option Explicit
'配列の2次元目の要素番号を定数化
Enum ItemName
    Name = 1
    Age = 2
End Enum

Sub MakeArray()
'顧客情報を格納する2次元配列を宣言
    Dim UserInfo(1 To 3, 1 To 2) As Variant
    
'2次元目の要素番号を列挙型で指定することにより可読性が高くなる
    UserInfo(1, ItemName.Name) = "鈴木"
    UserInfo(1, ItemName.Age) = "25"
    UserInfo(2, ItemName.Name) = "佐藤"
    UserInfo(2, ItemName.Age) = "30"
    UserInfo(3, ItemName.Name) = "山田"
    UserInfo(3, ItemName.Age) = "35"
    
    Dim i As Integer    
    For i = 1 To 3
            Debug.Print "インデックス:" & i & " " & _
                        "氏名:" & UserInfo(i, ItemName.Name) & " " & _
                        "年齢:" & UserInfo(i, ItemName.Age)
    Next 
End Sub

f:id:ray88:20210505193833p:plain