[VBA]Collectionオブジェクト(追加,削除,取得,個数)

投稿者: | 2022年2月25日
excelアイコン

エクセルバージョン

マイクロソフト365

 

本日はVBAのCollectionオブジェクト追加,削除,取得,個数についてです。

それではいってみましょう!

 

Collectionオブジェクトの作成方法

参照設定は必要ありません。

 

Collectionオブジェクトのメンバー

メンバー

 

ADDメソッド(追加)

概要

要素を追加します。

構文

object.Add item, key, beforeもしくはafter

引数

Add必須/省略可詳 細

item
第1引数

必須

要素を指定
・違うデータ型も追加できます

key
第2引数
省略可インデックスまたはキーを指定
・既にキーが存在して重複する場合はエラーになります。
before
第3引数
省略可指定した要素の前に追加。
インデックスで指定。
0からではなく1から)

・キーで指定も可。
・beforeとafter両方指定は不可。
・beforeとafter両方指定しない場合→末尾に追加。
after
第3引数
省略可指定した要素の後に追加。
・インデックスで指定。
0からではなく1から)

・キーで指定も可。
・beforeとafter両方指定は不可。
・beforeとafter両方指定しない場合→末尾に追加。

 

基本の追加

キーがあってもなくても追加は可能です。

実行後

キーが正しく追加されてるか確認したかったのですが、残念ながらエクセルVBAのウォッチウィンドウでは、キーは表示されずしか表示できません。

13基本追加

 

先頭に追加

先頭に追加する場合

キー:黒

要素:black

追加前

1コレクションオブジェクト作成

追加後

2先頭に追加

 

指定位置に追加

キーの後ろにblackを追加する場合

キー:黒

要素:black

追加前

1コレクションオブジェクト作成

追加後

3指定位置に追加2

指定位置に追加する方法は、配列に比べるとコレクションオブジェクトの方が簡単です\(^^)/

配列で指定位置に追加

 

末尾に追加

末尾に追加は、第3引数を省略します。

キー:黒

要素:black

追加前

1コレクションオブジェクト作成

追加後

4末尾に追加

 

重複するキーを追加

既にキーに存在するを追加するとエラーになるサンプルです。

実行後

12キー重複でエラー

キーがエラーになることで重複データを削除の際に便利に機能し、このエラーを逆手にとってエクセルVBAの達人たちが、よく使用します。

 

異なるデータ型を追加

コレクションオブジェクトは異なるデータ型を追加できます。

追加後

11異なるデータ型を追加

 

Itemメソッド(取得)

概要

要素を返します。

構文

object.Item(indexまたはkey) 

または

object(indexまたはkey) 

引数

Item必須/省略可詳 細
index必須インデックスまたはキーを指定。

 

キーまたはインデックスを指定して取得

yellowを取得する場合

取得後

Itemメソッドを省略しても取得は可能です。

5取得1

Debug.Print

 

全取得

For Eachを使用したサンプルです。

取得後

9全取得

 

Romoveメソッド(削除)

概要

要素を削除します。

構文

object.Remove (indexまたはkey) 

引数

Romove必須/省略可詳細
index必須インデックスまたはキーを指定。

 

先頭削除

インデックスを使用したサンプルです。

削除前

1コレクションオブジェクト作成

削除後

6先頭削除

 

指定位置を削除

キーを指定してblueを削除するサンプルです。

削除前

1コレクションオブジェクト作成

削除後

7指定位置削除

 

末尾削除

Countプロパティで最大インデックスの(末尾)要素を削除します。

削除前

1コレクションオブジェクト作成

削除後

8末尾削除

 

全削除

For Next Stepキーワードを使用して、末尾の要素から削除するサンプルです。

もしくは

For Nextとインデックス(1)で、先頭の要素を繰り返し削除するサンプルです。

削除前

1コレクションオブジェクト作成

削除後

10全削除

 

Countプロパティ(個数)

概要

要素の個数を返します。

構文

object.Count

 

要素数を取得

Countプロパティ使用で、簡単個数を取得できます。

 

まとめ

似たようなもので配列Dictionaryオブジェクトがありますが、それぞれの特徴を生かした使用をすることで便利に機能する場合もあると思いますので、使用する機会があったら是非試してみてください(*゚▽゚)ノ

以上です。