【Excel VBA】色々なものをコレクションする

記事
IT・テクノロジー

YoTubeでも解説しています。是非、ご覧ください。

最近、クラスモジュールに、ハマっています。
クラスモジュールを利用する際に、collectionオブジェクトを利用することがあります。
そういえば、説明していなかったと思いました。

色々なものをコレクションする

こんにちは。伊川です。
VBAを、勉強するにつれて、色々な技を身に着けてきます。
すると、だんだん、一括処理と、コードを短くするということが、楽しくなってきます。
行きつくのは、配列等になるのでしょう。
その中でも、Collecitonオブジェクトに、最近触れることが多いです。
ここを説明しないと、クラスモジュールの説明の際に、いきなり、Collecitonが登場しますので、今回、説明をしようと思います。
連想配列的な側面もありますが、連想配列ほど、難しくないです。

このブログはこんな人にお勧め

VBAの勉強が好きな人
効率的をしたい人
コードを短くしたい人

このブログを、読み終わるころには・・・・


Collecitonオブジェクトは、クラスモジュールに似ているとおもうはずです。
多分、クラスと、Collecitonオブジェクトを組合わせるともっと便利になると思います。

Colleciton

Collectionオブジェクトとは項目(item)とキー(key)をセットで格納するオブジェクトのことです。
Collectionオブジェクトの要素には数値、文字列からオブジェクトまで格納することができます。
要素ごとに数値や文字列などデータ型が異なる場合でも1つのコレクションとしてまとめておくことができます。
ただし、キーを重複させることはできません。
要するに、1つの箱の中に、複数の要素を格納できるイメージです。
オブジェクトとか、変数とか、またこれかと思う人もいると思います。
それは、あなたのスキルが向上したということですね。
同じように項目とキーをセットで格納できるオブジェクトとしてDictionaryオブジェクトがあります。
Collectionオブジェクトと違って、Dictionaryオブジェクトは異なるデータ型を要素として格納することはできません。
CollectionオブジェクトはDictionaryオブジェクトの代わりとして使用することもできますが、
用意されているメソッドが少なかったり、一般的に処理速度がDictionaryオブジェクトに比べて若干遅いなどのデメリットもあります。
私の中では、配列以上、連想配列未満という感じです。

Colleciton 作業手順 その1 MsgBoxで確認

1.jpg

上の図ですが、ウルトラマンAと、ウルトラマンしかいません。
Collecitonは、重複できないのですから、Collecitonを実行すると、こうなります。

2.jpg

3.jpg


Colleciton 作業手順 その2 重複しないリストを作成する


Collecitonは、キーが重複しないということを利用して、重複しないリストを作成できます。

4.jpg

5.jpg

余談ですが、この方法は、競馬でよく利用します。

Colleciton 作業手順 その3 連想配列でやってみる

6.jpg

似たようなコードですが、見た感じ、こっちのほうが複雑なような気がます。

Colleciton 作業手順 その4  キーの横の値も転記してみる

7.jpg
8.jpg
9.jpg

Colleciton 作業手順 その5 For eachで転記してみる

10.jpg
For eachのほうが、少し複雑ですね。
私は、For eachのほうが、汎用性があると思います。
コードを眺めていると、For eachを利用している人が多いからです。
また、カウントアップを利用するというのも、ポイントですね。
多分ですが、クラスモジュールと、Collecitonを、合体して利用するときは、この方法を利用します。
私は、For eachのほうが、汎用性があると思います。
コードを眺めていると、For eachを利用している人が多いからです。

ここがポイント

Collecitonは、配列よりもカンタンですね。
これも、公式と同じです。
後は、セルへ転記する方法が、少し、For ~Next、For eachでは違いますね。
でも、原則、For eachを、覚えましょう。
なぜなら、このブログを、読んでいる人は、For ~Nextは、理解していると思います。
覚えたら、貪欲に、新しい知識を、覚えていきましょう。

まとめ

Collecitonは、いつでも利用できるように、自分のスキルにしておくと、助かるシーンが、沢山あります。
動画の中で、調教師のカウントをしましたが、使えます。
重複しないという、キーワードが出たら、まずは、Collecitonです。
そのあとに、連想配列ですかね。
今回も最後まで読んでいただきありがとうございました。



サービス数40万件のスキルマーケット、あなたにぴったりのサービスを探す