列挙型の使い方(思いつき)

今までは列挙型を、列数などを指定するために使用していた。
例えば、こんな感じだ。

  • A列:名前を入力するセル
  • B列:年齢を入力するセル
  • C列:性別を入力するセル

このような場合「A列」や「1列」などの無為記号だと、直感的に理解しづらい。

Sub test1()
    Cells(2, 1) = "田中一郎"
End Sub


しかし↓のように定義しておくと、列の指定がそのまま項目名になるため、格段に分かり易くなる。

Enum myColumn
    名前 = 1
    年齢
    性別
End Enum
Sub test2()
    Cells(2, myColumn.名前) = "田中一郎"
End Sub

↓ こんな風に、選択候補が出てくれるのもありがたい。
f:id:Infoment:20181026193312g:plain


ところでふと思ったのだけど、こういう使い方って一般的なのだろうか。

Public Enum MachineType
    Vertical = 1
    Horizontal
End Enum

Function GetMachineType(machine_spec As String) As MachineType
    Select Case machine_spec
        Case "V"
            GetMachineType = Vertical
        Case "H"
            GetMachineType = Horizontal
    End Select
End Function

ユーザー定義関数の型を、Enumで定義した「MachineType」にすることで、先ほどと同じように選択候補を表示してくれる。
f:id:Infoment:20181026193652g:plain

また各パラメーターを数値で扱いつつも、Vertical のように意味のある単語に置き換えて読むことが出来るため、何かと都合がよいと思った。

私が無知なだけで、昔からある、普通の使い方なのかもしれない。或いは、邪道?タブー?な使い方かも。まずはしばらく個人的に使ってみて、不都合が無いか確認するとします。

参考まで。