配列のどこにどの値が入ってたっけ?
要素数が多かったり、過去に書いたコードなどの配列で中身がどこにあるのかわからなくなったりします。
また、FOR文+IF文でインデックスを求めたりしているかと思います。
そんな「配列の中身がわからない」「繰り返し処理でインデックスを調べている」と状況を改善するために、列挙型を使用してみることを検討してみてもよいかもしれません。
ということで、さっそく配列+列挙型を使うことでどれほどの可読性が上がるかを解説していきます。
配列+列挙型を組み合わせたコード
ここでは「配列単体のコード」をまず説明し、そのあとに「配列と列挙型を組み合わせたコード」の説明をします。
なので、前後のコードでどれだけ可読性や開発効率が上がりそうか実感してみてください。
配列単体の場合のコード
下は”配列にふたりの人物の情報を入れ、その情報からメッセージボックスで表示する”というコードになっています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
Sub ArrayOnlySample() Dim User(1 To 2, 1 To 5) As Variant User(1, 1) = "田中" User(1, 2) = "太郎" User(1, 3) = 170 User(1, 4) = 20 User(1, 5) = 60 User(2, 1) = "佐藤" User(2, 2) = "花子" User(2, 3) = 150 User(2, 4) = 23 User(2, 5) = 40 MsgBox User(1, 2) & "の年齢は" & User(1, 4) & "才です。" MsgBox User(2, 2) & "の体重は" & User(2, 5) & "kgです。" End Sub |
上のコードでの配列には「姓・名・身長・年齢・体重」のデータが入っています。
そして、最終的にはメッセージボックスに男性の場合は「姓・年齢」、女性の場合は「名・体重」を表示させるという決まりを設けたとします。
上の配列では正直、自分はともかく、他人が見たら配列に何が入っているか少し迷うかもしれません。
そして、配列の要素数が増えたり、わかりにくいデータも扱うことになれば、さらに理解に苦しむことになるかもしれません。
一見、「要素数も少ないから簡単だろう」と思うかもしれません。
しかし、たったこれだけの配列要素数にも関わらず、ボクは「あれ、、、体重ってインデックス何番だっけ?」と少し迷いました。
このように「配列はどこに何が入っているか分からない」という問題を抱えていることから、配列を使うことで可読性を損なうかもしれません。
配列+列挙型を組み合わせたコード
まず、組み合わせたコードの前に列挙型について知らない方は、1分ぐらいで読めるので『【VBA】列挙型の使い方【宣言・参照の記述を解説します】』に目を通しておいてください。
では、上のコードに列挙型を組み合わせると下のようになります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
Enum UserInfo LastName = 1 FistName = 2 Age = 3 Height = 4 Weight = 5 End Enum Sub ArraySample() Dim User(1 To 2, 1 To 5) As Variant User(1, UserInfo.LastName) = "田中" User(1, UserInfo.FistName) = "太郎" User(1, UserInfo.Age) = 20 User(1, UserInfo.Height) = 170 User(1, UserInfo.Weight) = 60 User(2, UserInfo.LastName) = "佐藤" User(2, UserInfo.FistName) = "花子" User(2, UserInfo.Age) = 23 User(2, UserInfo.Height) = 150 User(2, UserInfo.Weight) = 40 MsgBox User(1, UserInfo.LastName) & "の年齢は" & User(1, UserInfo.Age) & "才です。" MsgBox User(2, UserInfo.FistName) & "の体重は" & User(2, UserInfo.Weight) & "kgです。" End Sub |
上のコードは記述する量が増えてしまいましたが、それでも配列に入れられる文字列や数値が何なのかは容易に理解できるようになったかと思います。
加えて、それらの値を使うときにも「UserInfo.」と入力すればメンバ表示されるので、とても記述しやすくなるかと思います。
このように、配列に列挙型を用いることで可読性と開発効率を向上させることができるといえるのです。
1位 | 2位 | 3位 |
---|---|---|
Excel VBA 脱初心者のための集中講座 | パーフェクトExcel VBA | ExcelVBA 実戦のための技術 |
初心者~中級者 | 中級者 | 初心者~中級者 |
【初心者が手に取るべき参考書】 ・「書籍+動画」で圧倒的に理解しやすい入門書になっている。 ・丁寧で詳しい解説でボリューム感がある。 | 【より深い理解をしたい方にお勧めな参考書】 ・テーマに対して丁寧な解説・適度な深さで解説されている。 ・幅広くテーマを扱っていることから、基礎知識をあらかた網羅できる。 | 【入門書と一緒に買うべき参考書】 ・1つ1つのテーマを経験豊富なエンジニア視点で解説してくれている。 ・実践的で効果的なコードの書き方が理解できる。 |
【読んでみた一言】 正直、入門書はコレ一冊でいいかも。あとは中級者用の参考書に進むべし。 | 【読んでみた一言】 深く書かれているが、少々専門的に書かれていることから、読む前に数冊の入門書を読破したほうが良い。 | 【読んでみた一言】 基礎知識を持っている人が次のレベルに達するきっかけを与えてくれる参考書である。 |
スポンサーリンク