列番号指定は、列挙型がおすすめ
このマクロは、Excelシートの特定の列からデータを取得して、デバッグウィンドウに氏名と合計点を出力します。その時、列番号の指定を、列挙型を使用しています。
' 列挙型で列番号を指定
Private Enum clm
氏名 = 1 ' 列挙型の最初のメンバーは列番号1を割り当て(通常はA列)
英語 ' 列挙型の2番目のメンバー(B列)
国語 ' 列挙型の3番目のメンバー(C列)
数学 ' 列挙型の4番目のメンバー(D列)
理科 ' 列挙型の5番目のメンバー(E列)
社会 ' 列挙型の6番目のメンバー(F列)
合計 ' 列挙型の7番目のメンバー(G列)
順位 ' 列挙型の8番目のメンバー(H列)
End Enum
Private Sub Enum_Colomn()
Dim rw As Long
' 4行目から、"氏名"列(A列)の最終行までをループします
For rw = 4 To Cells(Rows.Count, clm.氏名).End(xlUp).Row - 1
' デバッグウィンドウに氏名と合計を表示します
Debug.Print Cells(rw, clm.氏名), Cells(rw, clm.合計)
Next rw
End Sub
詳しい説明
1. 列挙型 Enum
の使用
VBAのEnum
(列挙型)を使って、特定の項目に対する列番号を定義しています。列挙型を使うと、コードの可読性が向上し、ハードコーディングされた数値(列番号)を避けることができます。
氏名
:A列
(列番号1)英語
:B列
(列番号2)国語
:C列
(列番号3)数学
:D列
(列番号4)理科
:E列
(列番号5)社会
:F列
(列番号6)合計
:G列
(列番号7)順位
:H列
(列番号8)
2. サブルーチン Enum_Colomn
の動作
このサブルーチンでは、Excelのシートに以下のデータがあると仮定し、4行目から開始して氏名
列の最後のデータまでループします。
For rw = 4 To Cells(Rows.Count, clm.氏名).End(xlUp).Row - 1
:Cells(Rows.Count, clm.氏名).End(xlUp).Row
は、指定した列(この場合は氏名
列)で最後にデータが入力された行番号を取得します。Excelシートの行数(Rows.Count
)から上に向かって検索し、最初に見つかったデータのある行を探します。4
行目から最後のデータ行の一つ手前までをループします(- 1
)。
Debug.Print Cells(rw, clm.氏名), Cells(rw, clm.合計)
:- 各行の
氏名
列と合計
列の値をデバッグウィンドウに出力します。
- 各行の
安藤明彦 338
飯島伊代 438
内山初華 354
海老原瑛太 323
岡田央佳 353
川島和也 438
北沢恭介 348
熊沢玖瑠美 461
慶田健太 390
近藤琴葉 302
坂本聡美 429
柴田翔平 347
3. 用途と利便性
このコードは、Excelシートで成績表などのデータを処理する際に使われます。Enum
を使用することで、コード内で列を変更したい場合も、数値を変更するのではなく、列挙型の定義を変更するだけで対応可能です。これにより、コードがより直感的で保守しやすくなります。
以下のようにインテリセンスが使用でき、間違いのないプログラミングができます。