コレクション(Collection)オブジェクト「連想配列」
2017/10/12
コレクション(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 |
実行結果
関連記事
-
-
出力位置、書き込み位置を設定(Tab 関数)
出力位置、書き込み位置を設定 Tab 関数 は、Print メソッド、または P …
-
-
VBA の演算子(演算子の優先順位)
演算子の優先順位 演算子の優先順位とは、1つの式の中に演算子が複数ある場合、どの …
-
-
四捨五入・切り上げ・切り捨て・丸め(Round 関数 他)
Round 関数(丸め)の使い方 【書式】 value = Round ( ex …
-
-
上付き文字・下付き文字(Superscript,Subscript)
上付き文字(Superscript プロパティ) Superscript プロパ …
-
-
オートシェイプの種類を表す定数(MsoAutoShapeType 列挙型)
MsoAutoShapeType 列挙型 オートシェイプオブジェクトの図形の種類 …
-
-
配列(宣言・要素数の変更について)
配列の宣言 【書式】※ 配列の宣言 <Type 型の静的配列(固定長配列)の宣言 …
-
-
VBAの変数宣言
VBAの変数宣言について 変数を暗黙的に宣言する エクセル VBA の場合、明示 …
-
-
対象のオブジェクトをクリアする(Clear メソッド)
Clear メソッド 対象となるオブジェクト全体をクリアします。Range オブ …
-
-
VBA の演算子(算術演算子)
算術演算子 算術演算を行うときに使用する演算子です。 ^(べき乗)、*(積)、/ …
-
-
データ型変換関数
データ型変換関数の使い方 【書式】 function ( expression …
- PREV
- Option Compare ステートメント
- NEXT
- データ型変換関数