[VBA]ExcelにおけるEnum(列挙型)の使い方


[0]はじめに

Zitanです。
Excelマクロでは、行と列の操作をすることが多いですが、(当たり前ですねw)
ヘッダの項目名を列番号でコーディングすると分かりづらい場合があります。
そこでEnum(列挙型)を使うと、あとでコードを見返したときに見やすいというメリットがあります。

[1]前提

Excel(2016を使用)を開きます。
Sheet1に下の図のような商品テーブルを用意します。

[2]やること

B列(商品名)のデータが入っている最終行の行番号を取得します。
出力結果が「4」になればOKです。

[3]Before

Enumを使わない場合
Sub test1()

Dim lastRow As Long
Dim SHEET As Worksheet: Set SHEET = ThisWorkbook.Worksheets("Sheet1")
lastRow = SHEET.Cells(Rows.Count, 2).End(xlUp).Row '←ここです
Debug.Print "B列(商品名)のデータが入っている最終行の行番号は" & lastRow & "です。"

End Sub
出力結果
商品名列のデータが入っている最終行の行番号は4です。

[4]After

※Enumの宣言はSubの上に記述します。
※Enum型は既定でPublicなのでプロジェクト全体で使う場合は省略可能です。モジュール内のみで使用する場合は「private Enum」にします。
※一列目(ID)を1に設定する場合は、明記しないと0が割り振られます。以降省略すると+1ずつ割り振られます。

Enumを使った場合
Enum COL
ID = 1
商品名
End Enum

Sub test1()

Dim lastRow As Long
Dim SHEET As Worksheet: Set SHEET = ThisWorkbook.Worksheets("Sheet1")
lastRow = SHEET.Cells(Rows.Count, COL.商品名).End(xlUp).Row '←ここです
Debug.Print "B列(商品名)のデータが入っている最終行の行番号は" & lastRow & "です。"

End Sub
出力結果
商品名列のデータが入っている最終行の行番号は4です。

[5]まとめ

いかがでしょうか。知っている人にとっては大した内容ではないかもしれませんが、初心者・プログラミング未経験の方にとっては意外と重宝する内容だと思います。開発現場でも割と使います。