_基本

【VBA基本】Enum(列挙型変数)を使用する

Enum(列挙型変数)とは?

定数をまとめて可読性を上げたものがEnum(列挙体ステートメント)です。
定数と違う点は以下です。

■定数(Const)と列挙体(Enum)の違い
設定値は長整数型 (Long) のみであること
コード入力時、自動入力補完機能が使用できること
モジュール レベルでのみ記述が可能であること

Constと異なり、自動入力補完機能(インテリセンス)が可能で、
Enumでひとまとめ(With~End Withのように)にするため、コードの可読性があがります。

変更しない固定値をコードにそのまま記述するマジックナンバーで記載すると修正する時が大変です。
定数(Const)と列挙体(Enum)を上手に使い、メンテナンスをしやすいコード記述を心がけましょう。

Enum(列挙型変数)のサンプルコード

’■列挙体のサンプル
Enum eCol
    GoodsNo = 1
    GoodsKind = 2
    GoodsName = 3
    GoodsValueCost = 4
    GoodsValueSale = 5
End Enum
'■列挙体の使用例
Public Sub test()
    Cells(i, eCol.GoodsNo) = 1
    Cells(i, eCol.GoodsKind) = "分類名"
    Cells(i, eCol.GoodsName) = "商品名"
    Cells(i, eCol.GoodsValueCost) = "原価"
    Cells(i, eCol.GoodsValueSale) = "売価"
End Sub

 

基本的な使い方は定数と同様です。値を代入して使用可能です。
テーブルの形で使用する場合、商品コードや商品名などのセルの列(Column)は基本移動する事はないですよね。
定数は消費税率など基本的には変わらないもの、Enumはセルの列や行を判断させるものに使用します。

プログラム開発には普遍的だが拡張性があるようにしておく事も必要です。

Enumの仕様・注意点

'■要素を省略する事も可能(可読性が下がるのでお勧めしません)
Enum eCol
    GoodsNo = 1
    GoodsKind  '省略しても自動的に2としてくれる
    GoodsName  '省略しても3としてくれる
End Enum

 

’■Enumはもちろん定数ですので、後から代入はできません。
Enum eCol
    GoodsNo = 1
End Enum

Public Sub test()
    eCol.GoodsNo = 1'コンパイルエラー 定数に値を代入できません
End Sub

 

 

コメント

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