コレクション(Collection)オブジェクトの使い方
【書式】
Dim myCollection As Collection
Set myCollection = New Collection
コレクションを利用するため、変数を Collection 型で宣言し、New ステートメントを使用して、Collection オブジェクトをセットします。
コレクション(Collection)オブジェクトは、要素(myItem)とそれを取り出すためのキー(Key)を持ち、簡単な連想配列として使用できます。(本格的な連想配列を利用するには 連想配列(Dictionary オブジェクト)を参照して下さい。)
【メソッド】
myCollection.Add ( myItem [, Key, Before, After ] )
myCollection.Remove ( { Index | Key } )
myItem = myCollection.[ Item ] ( { Index | Key } )
【プロパティ】
ItemCount = myCollection.Count
【各項目の説明】
- myCollection ・・・ コレクション( Collection )オブジェクト
- myItem ・・・ コレクション( Collection )に追加するメンバ(要素)
- Before ・・・ Add メソッド 使用時、ここで指定したインデックス番号のメンバ(要素)の前に追加します。(省略可)
- After ・・・ Add メソッド 使用時、ここで指定したインデックス番号のメンバ(要素)の後に追加します。(省略可)
- Index ・・・ コレクション( Collection )のメンバ(要素)の位置(インデックス番号)
- Key ・・・ コレクション( Collection )のメンバ(要素)を取り出すときに使用する名前で文字列で指定します。Add メソッド 使用時、省略した場合は、Item メソッド で取り出すときインデックス番号( Index )しか使用できません。また、数値を指定するとエラーになります(CStr 等の型変換関数で、文字列型にすると設定でいます)。
- ItemCount ・・・ コレクション( Collection )のメンバ(要素)数
Item メソッドは、コレクション( Collection )の規定メソッドなので、「Item」は省略することができます。
Add メソッド を利用して追加したメンバ(要素)には、自動的に1から始まるインデックス番号がつけられます。
Add メソッド で、メンバ(要素)を追加する際、すでに設定されている「キー」(Key )を設定してしまうとエラーが発生します。
コレクション(Collection)使用例
サンプルVBAソース
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
Sub Sample_Collection_01() Dim v, i As Long, str As String Dim myAddress As Collection Set myAddress = New Collection myAddress.Add 25, "Age" 'インデックス番号は 1 myAddress.Add "Yamada", "Name", 1 '「Age」の前に追加するので、インデックス番号は 1 になる myAddress.Add "000-1111-2222", "Number", , 1 '「Name」の後に追加するので、インデックス番号は 2 になる For Each v In myAddress i = i + 1 str = str & i & ":" & v & Chr(13) Next v MsgBox str '「Item」は省略可 / 引数はインデックス番号、キー のどちらでも指定することができる MsgBox myAddress.Item("Name") & Chr(13) & _ myAddress.Item(2) & Chr(13) & _ myAddress("number") & Chr(13) & _ myAddress(1) For i = 1 To myAddress.Count myAddress.Remove 1 Next i End Sub |
実行結果
サンプルVBAソース
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
Sub Sample_Collection_02() Dim myItem As Collection Dim i As Long, myStr As String Set myItem = New Collection With Application.Worksheets("Sheet1") 'エラーが発生すると次の処理へすすむ On Error Resume Next 'すでに設定されている「キー」を追加しようとするとエラーが発生する For i = 2 To .Cells(Rows.Count, 1).End(xlUp).Row myItem.Add .Cells(i, 2), .Cells(i, 2) Next i On Error GoTo 0 End With For i = 1 To myItem.Count myStr = myStr & myItem.Item(i) & Chr(13) Next i MsgBox myStr End Sub |