2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

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

Last updated at Posted at 2021-04-28

[0]はじめに

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

[1]前提

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

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]まとめ

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

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?