最近、クラスモジュールに、ハマっています。
クラスモジュールを利用する際に、collectionオブジェクトを利用することがあります。
そういえば、説明していなかったと思いました。
目次
色々なものをコレクションする
こんにちは。伊川(@naonaoke)です。
VBAを、勉強するにつれて、色々な技を身に着けてきます。
すると、だんだん、一括処理と、コードを短くするということが、楽しくなってきます。
行きつくのは、配列等になるのでしょう。
その中でも、Collecitonオブジェクトに、最近触れることが多いです。
ここを説明しないと、クラスモジュールの説明の際に、いきなり、Collecitonが登場しますので、今回、説明をしようと思います。
連想配列的な側面もありますが、連想配列ほど、難しくないです。
このブログはこんな人にお勧め
- VBAの勉強が好きな人
- 効率的をしたい人
- コードを短くしたい人
このブログを、読み終わるころには・・・・
多分、クラスと、Collecitonオブジェクトを組合わせるともっと便利になると思います。
Colleciton
Collectionオブジェクトとは項目(item)とキー(key)をセットで格納するオブジェクトのことです。
Collectionオブジェクトの要素には数値、文字列からオブジェクトまで格納することができます。
要素ごとに数値や文字列などデータ型が異なる場合でも1つのコレクションとしてまとめておくことができます。
ただし、キーを重複させることはできません。
要するに、1つの箱の中に、複数の要素を格納できるイメージです。
オブジェクトとか、変数とか、またこれかと思う人もいると思います。
それは、あなたのスキルが向上したということですね。
同じように項目とキーをセットで格納できるオブジェクトとしてDictionaryオブジェクトがあります。
Collectionオブジェクトと違って、Dictionaryオブジェクトは異なるデータ型を要素として格納することはできません。
CollectionオブジェクトはDictionaryオブジェクトの代わりとして使用することもできますが、
用意されているメソッドが少なかったり、一般的に処理速度がDictionaryオブジェクトに比べて若干遅いなどのデメリットもあります。
Colleciton 作業手順 その1 MsgBoxで確認
上の図ですが、ウルトラマンAと、ウルトラマンしかいません。
Collecitonは、重複できないのですから、Collecitonを実行すると、こうなります。
Colleciton 作業手順 その2 重複しないリストを作成する
Collecitonは、キーが重複しないということを利用して、重複しないリストを作成できます。
余談ですが、この方法は、競馬でよく利用します。
Colleciton 作業手順 その3 連想配列でやってみる
似たようなコードですが、見た感じ、こっちのほうが複雑なような気がます。
Colleciton 作業手順 その4 キーの横の値も転記してみる
Colleciton 作業手順 その5 For eachで転記してみる
For eachのほうが、少し複雑ですね。
私は、For eachのほうが、汎用性があると思います。
コードを眺めていると、For eachを利用している人が多いからです。
また、カウントアップを利用するというのも、ポイントですね。
多分ですが、クラスモジュールと、Collecitonを、合体して利用するときは、この方法を利用します。
私は、For eachのほうが、汎用性があると思います。
コードを眺めていると、For eachを利用している人が多いからです。
ここがポイント
Collecitonは、配列よりもカンタンですね。
これも、公式と同じです。
後は、セルへ転記する方法が、少し、For ~Next、For eachでは違いますね。
でも、原則、For eachを、覚えましょう。
なぜなら、このブログを、読んでいる人は、For ~Nextは、理解していると思います。
覚えたら、貪欲に、新しい知識を、覚えていきましょう。
まとめ
Collecitonは、いつでも利用できるように、自分のスキルにしておくと、助かるシーンが、沢山あります。
動画の中で、調教師のカウントをしましたが、使えます。
重複しないという、キーワードが出たら、まずは、Collecitonです。
そのあとに、連想配列ですかね。
今回も最後まで読んでいただきありがとうございました。
今回のサンプルファイルは、No279です。
わからない事を延々と考えるのは、無駄です。
- なんで作動かないの?
- もうやだ!VBAなんか嫌い!
- ネットで調べても情報がない!
必ず作動するコードが、ここにあります。