【VBAリファレンス|実務向け】【VBA中級への道】「列挙型(Enum)」を使ってコードの可読性と保守性を劇的に向上させる方法

スポンサーリンク

なぜ「列挙型(Enum)」を使うのか?

VBAで開発をしていると、特定の数値やステータスに意味を持たせることがよくあります。例えば、セルの色番号や、処理の状態(未処理・処理中・完了など)を扱う際、マジックナンバー(意味不明な数値)をそのままコードに書くのは非常に危険です。

「あれ、この数値は3だったかな?それとも4だったかな?」と毎回確認したり、修正が必要な時にあちこちを探し回ったりしていませんか?今回紹介する「列挙型(Enum)」を活用すれば、これらの課題を一気に解決できます。

列挙型(Enum)とは?

列挙型(Enum)とは、複数の関連する定数をひとまとめにグループ化し、名前を付けて管理する仕組みです。
最大の特徴は、VBAのエディタ上で「入力候補リスト(インテリセンス)」が表示される点です。これにより、スペルミスを防げるだけでなく、コードを書くスピードが飛躍的に向上します。

実装のポイント

列挙型は、モジュールの先頭(宣言セクション)に記述します。プロシージャ内では定義できない点に注意してください。

基本の構文は以下の通りです。
Enum 定数グループ名
名前1 = 値1
名前2 = 値2
End Enum

また、値を省略した場合は、先頭が0から始まり、以降は1ずつ自動的に加算されます。ただし、ビジネス現場では「可読性」を優先し、値は明確に記述することを強く推奨します。

サンプルプログラム:色設定をスマートに管理する

以下のコードを標準モジュールにコピーして、実際に「FontColor.」まで入力してみてください。入力候補としてRedやBlueがリストアップされるはずです。

サンプルコード

‘ モジュールの先頭(宣言セクション)に記述
Public Enum FontColor
Red = 3
Green = 4
Yellow = 5
Blue = 6
End Enum

Sub Sample_Enum()
‘ 列挙型を使うことで、数値の意味が明確になります
With ActiveCell.Font
.ColorIndex = FontColor.Red
End With

MsgBox “文字色を赤に変更しました。”
End Sub

応用・注意点:現場で生き残るためのマナー

1. 明示的な値を記述する
前述の通り、値を省略して自動設定させることも可能ですが、後からコードを読むメンバーにとっては「結局、何番が割り当てられているのか?」を調べる手間が発生します。メンテナンス性を考慮し、値は必ず定義しましょう。

2. モジュールレベルのスコープ
Enumは定義したモジュール内でのみ有効です。もしプロジェクト全体で共通のステータス管理(例:Status.Ready, Status.Done)を行いたい場合は、標準モジュールに記述し、Publicキーワードを付与して利用しましょう。

3. 型はLong型のみ
列挙型で扱えるのは「長整数型(Long)」の値のみです。文字列や小数点は扱えないため、あくまで「数値の識別子」として活用してください。

このようにEnumを使いこなせると、コードが「仕様書」のような役割を持つようになります。ぜひ明日からの開発に取り入れてみてください。

タイトルとURLをコピーしました