- ベストアンサー
列挙
VBAの勉強をしていて、 定数と変数の違いは分かったのですが 列挙の意味がいまいちわかりません。 どういう意味でしょうか? また 列挙と定数・変数は関連付いてますか?
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
1例を挙げてみるので、参考にしてください。 列挙の意味はEnumからEnd Enumまでに、同じ仲間の定数名を列挙して定義するからそう言うのでしょう。 ーー Enum weekday Sunday = 1 Monday Tuesday Wednesday Thursday Friday Saturday End Enum Sub Sample4() Cells(2, "C") = WeekdayName(weekday.Monday) Cells(3, "C") = WeekdayName(weekday.Tuesday) Cells(4, "C") = WeekdayName(weekday.Wednesday) Cells(5, "C") = WeekdayName(weekday.Thursday) Cells(6, "C") = WeekdayName(weekday.Friday) Cells(7, "C") = WeekdayName(weekday.Saturday) Cells(8, "C") = WeekdayName(weekday.Sunday) 'Cells(8,"C")=weekdayname(Weekday. までを入れるとドロップダウンで候補が出る End Sub ーー 上記のような書き方の、Enum weekdayーEnd Enumで Sunday = 1, Monday=2, Tuesday=3... のような定義になる。コード部分を省略して書かないと前行の整数的に+1のコードが割り当てられる。 もちろん2,3・・としても良い。 モジュールのコードでは欧米人にはWeekdayName(2) と書くよりも WeekdayName(weekday.Monday)と書くほうがわかりやすいだろう。 漢字で月曜日、火曜日、・・のようにも定義できる。 またweekdayname(Weekday. までを入れるとドロップダウンで候補が出るのでマウスで選択できる。 これは良い点です。 ーー 勝手に挙げたのですが、VBAのweekday関数は http://officetanaka.net/excel/vba/function/WeekdayName.htm など参照。 ーー C言語にもEmumがあるが、違う点もある。 ーー 多人数で共同で大きなシステムを作り上げるときには、コードの可視性が上がるので、避けて通れないかも。 ー ただ自分でエクセルをちょこちょこと、いじくる程度では、あまり使わないだろう。市販のVBAの解説書の 中では、Enumのことは出てきても、使用例があまり出てこないのではと感じる。 そういう仕組みがあるということを覚えておけばよいと思う。 VBA初心者なら、もっとプログラムを組み立てる、処理ロジックの学習ポケットを経験で増やすほうが先だろうと思う。
その他の回答 (1)
- ap_2
- ベストアンサー率64% (70/109)
列挙型は、定数の一種で、いくつかの定数をグループ化します。 定数が多いと混乱するので、"わかりやすく"なります。 グループ名はデータ型と同様に扱えるため、引数とかでどんな定数を受け取るのか"明示"するのに使えます。実体は数値にすぎないので拘束力はなく、数値や他の定数を渡すこともできます。 VBAだと、複雑な処理かくことは少ないので、あまり使われませんが。 以下、例 '「XXXの種類」を指定する Enum EXxxType XxxA = 1 XxxB = 2 XxxC = 3 End Enum '「XXXの種類」を受け取ることを明示 Sub hoge (para As EXxxType) '~~ End Sub '使用例 Sub main() Call hoge(XxxB) '定数で指定 Call hoge(2) '数値で指定 End sub
お礼
ありがとうございます。