コレクション(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 |
実行結果
関連記事
-
-
ポイント単位の値に変換(CentimetersToPoints,InchesToPoints)
CentimetersToPoints メソッド センチメートル単位の値をポイン …
-
-
引数の整数部分を取得する(Fix 関数・Int 関数)
Fix 関数・Int 関数の使い方 【書式】 number_fix = Fix …
-
-
変数がEmpty 値かどうかをチェックする( IsEmpty 関数 )
IsEmpty 関数の使い方 【書式】 result = IsEmpty ( e …
-
-
出力位置、書き込み位置を設定(Tab 関数)
出力位置、書き込み位置を設定 Tab 関数 は、Print メソッド、または P …
-
-
VBA で正規表現を使う(RegExp オブジェクトのプロパティ)
RegExp オブジェクトのプロパティ RegExp オブジェクトの詳細に関して …
-
-
エラー(CVErr 関数・IsError 関数・Error 関数)
CVErr 関数(エラー番号をエラー値に変換する)の使い方 【書式】 retur …
-
-
Option Compare ステートメント
Option Compare ステートメントの使い方 【書式】 Option C …
-
-
Math 関数( Abs,Atn,Cos,Exp,Log,Rnd,Sgn,Sin,Sqr,Tan )
Abs 関数 【書式】 value = Abs ( number ) 【引数・戻 …
-
-
文字列:文字列を指定した形式に変換する(StrConv 関数)
StrConv 関数の使い方 【書式】 result = StrConv ( s …
-
-
ショートカットメニュー(CommandBar オブジェクト)
ショートカットメニュー(コンテキストメニュー) 右クリックで表示されるメニューの …
- PREV
- Option Compare ステートメント
- NEXT
- データ型変換関数


