和風スパゲティのレシピ

日本語でコーディングするExcelVBA

Collection

Collectionで重複なしリストを作成する

Collectionで重複のないユニークリストを作成する方法を解説します。KeyにItemと同じものを入れてKeyを重複チェックに利用するか、Itemの存在チェック関数を自作して対応するかの2つの方法で対応します。

Collectionに要素が存在するかチェックする

Collection内に要素が存在するかチェックするには、標準機能がないため愚直にFor Each文で一致する要素があるかを判定します。DictionaryならExistsメソッド一発なので、出来ればそちらで実装しましょう。

DictionaryをKeyだけでCollectionのように使う

DictionaryはKeyとItemをセットで持っておく仕組みですが、Itemを無視してKeyだけを一次元配列として使用する方法があります。このKeyのみDictionaryはCollectionの上位互換なので積極的に活用しましょう。

CollectionはFor文でループすると遅くなる

CollectionはIndexによるアクセスが遅いという特徴があり、ForEach文なら一瞬でもFor文だと数秒~数十秒かかってしまうことがあります。これはデータ件数が増えると加速度的に遅くなるので注意しましょう。

CollectionとDictionaryの違い

CollectionとDictionaryの違いについて解説します。どちらも「複数のデータをまとめて持つ仕組み」で、KeyとItemをペアで格納することができますが、Dictionaryが完全上位互換と言ってよい性能を持っています。

Collectionを配列(Array)に変換する

Collectionを配列に変換する方法を解説します。標準機能にはないため、愚直に全要素を配列へ出力して変換します。CollectionはFor文で回すと非常に遅い性質があるため、配列への代入はForEach文で行ってください。

Collectionをセルに出力/一括出力する

Collectionの中身をセルに出力する方法を解説します。For Each文を使って各要素を出力する方法と、一旦二次元配列に変換してから一括出力する方法があります。後者を汎用関数化しておくと便利です。

「Collection&Dictionary」配布資料&配信アーカイブ

第5回 和風スパゲティ勉強会「Collection&Dictionary」の配布資料と配信アーカイブを共有します。前回の配列(Array)に続いてExcelVBA配列トリオを一挙に解説しました。復習にお役立てください。

8/28(木)21:00~ 第5回 和風スパゲティ勉強会「Collction&Dictionary」

和風スパゲティ勉強会 第5回のテーマは「Collction&Dictionary」ということで、使いこなせば強力な武器になるこの2つの機能を徹底解説します!同時開催の配列入門もご視聴いただき、3つ一気にマスターしましょう。

For Each文の中身を途中でいじるとどうなるか

今日はFor Eachステートメントで遊んでみようと思います。For Eachステートメントの変数を途中で変更したり、対象のCollectionを追加・削除して、それがForEachのループに影響するか試してみます。

3/18(土)20:00~ VBA勉強会「配列入門!Array&Collection&Dictionary欲張りセット」

3/18(土)20:00~ Zoom勉強会に登壇します。「配列入門!Array&Collection&Dictionary欲張りセット」と題し、まだ配列を使ったことがない方、CollectionやDictionaryに触れてみたい方、3つの特長と使い分けポイントを整理したい方に向けた講座を行います。

変数宣言(Dim)とNewを1行で済ませてよいか

Collection/Dictionary/FileSystemObject/自作クラスを使用するとき、Dim x As X、Set x = New Xと2行で宣言する方法と、Dim x As New X と1行で宣言する方法があります。この違いはNothing時の動きと、Initializeの実行タイミングに現れます。