コレクション(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 |
実行結果
関連記事
-
文字列:文字列の空白を削除(Trim 関数, LTrim関数, RTrim関数)
Trim 関数・LTrim 関数・RTrim 関数の使い方 【書式】 <先頭と末 …
-
フォントの設定(Font プロパティ)
フォントの設定(Font プロパティ) 指定されたオブジェクトのフォント情報(F …
-
ユーザー定義定数(Const ステートメント)
定数を使う ユーザー定義の定数を使用するには、Const ステートメントを使って …
-
指定した数値を文字列に変換する(Str 関数)
Str 関数 の使い方 Str 関数は、数値・数式を文字列に変換して返す関数です …
-
式を評価し、結果(真・偽)に応じた式・値を返す(IIf 関数)
IIf 関数 の使い方 IIf(アイイフ)関数は、式を評価してその結果(真・偽) …
-
文字列:文字列変数内の一部を置き換える(Mid・MidB ステートメント)
Mid・MidB ステートメントの使い方 【書式】 { Mid | MidB } …
-
日付時刻:経過時間を取得( Timer 関数 )
Timer 関数の使い方 【書式】 result = Timer () 【戻り値 …
-
セルのデータを固定長形式で複数のセルに分割する(TextToColumns メソッド・Parse メソッド)
固定長形式でセルを分割 TextToColumns メソッドや Parse メソ …
-
文字列:指定した数の空白(スペース)からなる文字列を返す(Space 関数)
Space 関数 【書式】 result = Space ( number ) …
-
文字列:文字列を最後から検索してその最初の文字位置を返す(InStrRev 関数)
InStrRev 関数 任意の文字列の中で、指定した文字列を最後から検索して、見 …
- PREV
- Option Compare ステートメント
- NEXT
- データ型変換関数