【VBA】コレクションの使い方【配列との違い・引数・メソッドまで解説します】

コレクションは複数の値を扱うことができ、特徴として主に「コレクション内の要素に名前を付けられる」というクラスになります。

 

よく話題に挙がるのが、コレクションと同様に複数の値を扱うことができる『配列との違い』についてです。

そして、無理やり配列を使おうとして、処理数が増えている人が結構います。

なので、本記事では「コレクションと配列の違い」から「コレクションの使い方」まで解説していきます。

 

コレクションのイメージがしやすくなるように、一度下のコードに目を通しておいてください。

 

では、さっそくコレクションについて解説していきます。

スポンサーリンク



はじめ:配列との違い

下はコレクションにあって配列にはない決定的な特徴になります。

・インデックスの代わりに「Key」から値を引っ張ってこれる。

・必要に応じて、既存の要素の前後に要素を追加できる。

・「Key」で要素に名前を付けられるので、コードの可読性が上がる。

 

配列というのは宣言時以外、どこにどの値が入っているか分からなかったりします。

だから、FOR文やIF文を使って、要素を調べるという人も結構います。

ですが、そういう場合はインデックスの代わりに『Key』を設定できるコレクションを使えば、スムーズに事が運ぶかもしれません。

加えて、『Key』で値に名前を付けることができることから、コードの可読性の向上に繋げることができます。

 

また、既存の配列のインデックスの並びが不規則だったりして、不満が生じることがあります。

そういうときも、コレクションなら多くの要素を追加している状態でも、インデックスで指定した要素の前後に要素を入れることができたりします。

 

このように配列よりも柔軟な操作ができるコレクションは実務で結構役に立ったりします。

 

コレクションの使い方

まずは、実際のコードの説明に入る前に主に使う「Addメソッド」の引数について説明します。

コレクションのAddメソッドの引数は下の通りです。

引数 説明
Item コレクションに追加する要素を指定する
Key インデックスの代わりに使用できる文字列を指定する
Before コレクション内にある特定のデータの前に要素を追加する
After コレクション内にある特定のデータの後に要素を追加する

 

また、コレクションのAddメソッド以外で使うのはRemoveメソッドになります。

メソッド 説明
Remove コレクション内の指定したデータを削除する

※「Itemメソッド」というのもありますが、あまり使わないし、引数のItemとゴッチャになりそうなので省略しています。

 

では、以降、実際に上の引数を使って確かめていこうと思います。

追加する要素にKeyを設定する

まず、コレクションの特徴であるインデックスの代わりに「Key」を指定するを解説していきます。

※上のコードは6行目~10行目は「With」ステートメントで省略ができます。

 

上のコードでは6行目~10行目では「Item」で要素を指定し、それらの要素に「Key」も指定しています。

そして、12行目で上で指定したKeyを使ってコレクション内の要素を使っています。

ポイントコレクションの要素にKeyを指定しない場合はインデックスは”1”から始まります。

※「コレクション名.Item(1)」で始めに追加した要素が呼び出せます。

 

コレクションのように「Key」を指定しない配列が同じ事をしようとすれば、わざわざ目的の値までFor文とIF文を使って中身を確認していかなければならないのです。

コレクション内にある要素の前後に要素を追加する

つぎに既存のコレクション内の特定の要素の前後に要素を追加するという内容を解説していきます。

下のコードはインデックス「2」の前に要素を追加しています。

6 , 7行目:「one(1)」「three(2)」をコレクションに追加する。

10行目:現時点のインデックス”2”の要素を確認している。もちろん、表示されるのは「three」。

13行目:インデックス”2”の前に「two」を追加している。

16行目:要素追加後のインデックス”2”の要素を確認している。ここで表示されるのは「two」。

結果コレクション内は「one(1)」「three(2)」「one(1)」「two(2)」「three(3)」

 

配列で”既存の要素の前後に要素を追加する”をしようとすると、配列を作り直し,FOR文を使ったりする必要があります。

 

コレクションの要素を削除する

下は『Removeメソッド』を使って、インデックス「2」の要素を削除するというコードになっています。

 

6 , 7行目:「one(1)」「two(2)」をコレクションに追加する。

9行目:インデックス”2”に値が入っているかの確認をしている。

12行目:Removeメソッドを使って、インデックス”2”を削除している。

15行目:12行目で削除したインデックス”2”を使おうとしている。※結果、エラーになる。

 

このようにコレクションではインデックスを指定して要素を削除することも容易にできます。

 

〇おすすめのVBA参考書ランキング!

1位

2位

3位

Excel VBA 脱初心者のための集中講座パーフェクトExcel VBAExcelVBA 実戦のための技術
初心者~中級者中級者初心者~中級者
【初心者が手に取るべき参考書】

・「書籍+動画」で圧倒的に理解しやすい入門書になっている。

・丁寧で詳しい解説でボリューム感がある。

【より深い理解をしたい方にお勧めな参考書】

・テーマに対して丁寧な解説・適度な深さで解説されている。

・幅広くテーマを扱っていることから、基礎知識をあらかた網羅できる。

【入門書と一緒に買うべき参考書】

・1つ1つのテーマを経験豊富なエンジニア視点で解説してくれている。

・実践的で効果的なコードの書き方が理解できる。

【読んでみた一言】
正直、入門書はコレ一冊でいいかも。あとは中級者用の参考書に進むべし。
【読んでみた一言】
深く書かれているが、少々専門的に書かれていることから、読む前に数冊の入門書を読破したほうが良い。
【読んでみた一言】
基礎知識を持っている人が次のレベルに達するきっかけを与えてくれる参考書である。

¥2,794円
amazonで確認!

¥3,608円
amazonで確認!

¥2,640円
amazonで確認!

スポンサーリンク