VBA 列挙体 Enumの使い方

列挙体は、定数をひとまとめにして管理することができます。
特にVBAではEXCELの列(Columns)を管理するのに使用するととても便利ですので紹介していきます。

列挙体の宣言

それでは早速列挙体の宣言方法を紹介していきます。

Enum 列挙体名
    名称 = 値
    名称2 = 値2
    名称3 = 値3
    ・
    ・
    ・
End Enum

列挙体名がグループの名前で、名称の部分がメンバーの名前です。
任意の名前を設定してください。
例を見てみましょう。

Enum excelCol
    no = 0
    kojinid = 1
    namae = 2
    company_id = 3
    company_nm = 4
    busho = 5
End Enum

excelColという名前の列挙体に、6個の値を設定しました。
これで基本的な宣言方法は完了です。

列挙体は、定数をひとまとめにしてグループ化することができます。
ただし列挙体の定数は、数値のみしか格納できません。
文字列は格納できないので注意して下さい。

列挙体 値の省略

先ほど列挙体の値を1項目ずつ全て設定していましたが、省略することができます。

Enum excelCol
    no
    kojinid
    namae
    company_id
    company_nm
    busho
End Enum

このように値の部分を省略することで、0から自動で値を振ってくれます。
例では0~5までの値を振っています。

また、値を省略した場合、前の項目に値指定がある場合は指定があった数字の次の数字が自動で振られます。
例を見てみしょう。

Enum Col
    no = 2
    kojinid
    namae
    company_id
    company_nm
    busho
End Enum

このように「no = 2」となっているので3から順番に値が振られていきます。

下記のような書き方もできます。

Enum Col
    no = 2
    kojinid = 4
    namae
    company_id
    company_nm
    busho
End Enum

この場合は、namae = 5となり順番に振られていきます。
このように列挙体の値を省略することが可能です。

列挙体の使用方法

宣言した列挙体を使用してみましょう。
列挙体を利用して、表を作成してみました。

ソースコード

Enum Col
    no = 2
    kojinid
    namae
    company_id
    company_nm
    busho
End Enum

Const START_ROW = 3

Private Sub cmdEnum_Click()

    For i = 0 To 2
        Cells(START_ROW + i, Col.no) = i + 1
    Next
    
    Cells(START_ROW, Col.namae) = "田中"
    Cells(START_ROW + 1, Col.namae) = "鈴木"
    Cells(START_ROW + 2, Col.namae) = "青木"
    
    Cells(START_ROW, Col.kojinid) = "A0001"
    Cells(START_ROW + 1, Col.kojinid) = "A0002"
    Cells(START_ROW + 2, Col.kojinid) = "A0003"
    
    Cells(START_ROW, Col.company_id) = "C0001"
    Cells(START_ROW + 1, Col.company_id) = "C0002"
    Cells(START_ROW + 2, Col.company_id) = "C0003"
    
    Cells(START_ROW, Col.company_nm) = "A株式会社"
    Cells(START_ROW + 1, Col.company_nm) = "B株式会社"
    Cells(START_ROW + 2, Col.company_nm) = "C株式会社"
    
    Cells(START_ROW, Col.busho) = "総務"
    Cells(START_ROW + 1, Col.busho) = "経理"
    Cells(START_ROW + 2, Col.busho) = "営業"
    
End Sub

解説
1-8行目:列挙体を宣言
10行目:定数を宣言
14-36行目:セルに値を設定 セルの列を指定する際に列挙体を利用しています。

結果

今回は表の列を列挙体で記載しておき、値を代入際に列挙体を利用しています。
このように列を列挙体で記載しておくと、列項目の追加などがあったとしても、
列挙体を編集するだけでプログラムを修正できるようになるのでとても便利です。

まとめ

列挙体の使い方を紹介しました。
列挙体を使うことの注意点としては、数字のみしか対応できないので注意してください。
文字列ではできません。

全て定数で利用してもできるのですが、余裕があれば列挙体を利用して、
プログラムを作成してみてはいかがでしょうか。

 

EXCEL VBAの記事一覧

おすすめの記事