【VBA】コレクションの基本的な使い方

VBAでコレクションを使う方法

今回はVBAでコレクションを使う方法を紹介します。

コレクションは辞書型(Dictionary)のようにkeyと紐づける方法も、配列のようにインデックスと紐づける方法も使えます。

慣れるととても便利なオブジェクトなのでぜひ活用してみてください。

コレクションを作成する方法

Sub Sample()
    '空のコレクションを作成
    Dim col As Collection
    Set col = New Collection
End Sub

VBAでコレクションを使うには、まず、Collectionクラスを使用してコレクションを作成する必要があります。

サンプルコードのようにして、空のコレクションを作成できます。

コレクションに要素を追加する

Sub SampleAdd()
    '空のコレクションを作成
    Dim col As Collection
    Set col = New Collection
    
    'コレクションに要素を追加
    col.Add "item", "key"
End Sub

コレクションに要素を追加するにはAddメソッドを使います。

itemはコレクションに追加する要素(中身)です。サンプルコードでは文字列を入れていますが、オブジェクトや配列なども入れることができます。

keyはオブジェクトを識別するための文字列です。keyを省略することもできます。

コレクションの要素数を調べる

Sub SampleCount()
    '空のコレクションを作成
    Dim col As Collection
    Set col = New Collection
    
    'コレクションに要素を追加
    col.Add "item", "key"
    
    'コレクションの要素数を調べる
    Debug.Print col.Count
End Sub

コレクションの要素数を確認するにはCountプロパティを使います。

コレクションから要素を取り出す

Sub SampleItem()
    '空のコレクションを作成
    Dim col As Collection
    Set col = New Collection
    
    'コレクションに要素を追加
    col.Add "Item", "Key"
    'コレクションの要素数を調べる
    Debug.Print col.Count
    
    'コレクションから要素を取り出す
    Debug.Print col.Item("key") 'keyで取り出す
    Debug.Print col.Item(1) 'インデックスで取り出す
End Sub

コレクションに要素を取り出すにはItemメソッドを使います。

取り出しは辞書型(Dictionary)のようにkeyで取り出すこともできますし、配列のようにインデックスで取り出すこともできます。

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

Sub SampleRemove()
    '空のコレクションを作成
    Dim col As Collection
    Set col = New Collection
    
    'コレクションに要素を追加
    col.Add "Item", "Key"
    
    'コレクションの要素数を調べる
    Debug.Print col.Count
    'コレクションから要素を取り出す
    Debug.Print col.Item("key") 'keyで取り出す
    Debug.Print col.Item(1) 'インデックスで取り出す
    
    'コレクションから要素を削除する
    col.Remove "key" 'keyで指定
'    col.Remove 1 'インデックスで指定
End Sub

コレクションから要素を削除するにはRemoveメソッドを使います。

削除も辞書型(Dictionary)のようにkeyで指定することもできますし、配列のようにインデックスで指定することもできます。(要素が1つだけのためサンプルコードではインデックス指定をコメントアウトしています)

VBAが難しいと感じたら
プロにお任せして代わりに作ってもらってはいかがでしょう?
VBAの作成依頼はこちらから

《VBA中級者向けの本》
VBA上級者を目指したい人にはパーフェクトExcel VBA一択です。

created by Rinker
技術評論社
¥3,608 (2023/02/07 15:31:32時点 Amazon調べ-詳細)

他の「VBA」の記事はこちらからどうぞ

VBA

Posted by やろまい