コレクション(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 |
実行結果
関連記事
-
-
文字列:文字列右から指定文字数取得(Right 関数,RightB 関数)
Right 関数・RightB 関数 の使い方 【書式】 result_righ …
-
-
四捨五入・切り上げ・切り捨て・丸め(Round 関数 他)
Round 関数(丸め)の使い方 【書式】 value = Round ( ex …
-
-
指定した値を8進数で表記した文字列に変換する(Oct 関数)
Oct 関数 の使い方 【書式】 result = Oct ( expressi …
-
-
引数が省略されたかどうかをチェックする( IsMissing 関数 )
IsMissing 関数の使い方 【書式】 result = IsMissing …
-
-
データ型を調べて、そのデータ型を示す数値を返す(VarType 関数)
VarType 関数 の使い方 VarType 関数は、引数に、データ型を調べた …
-
-
RGB 値一覧表(XlRgbColor 列挙型)
RGB 値(XlRgbColor 列挙型)一覧表 RGB 関数を使用して、出力さ …
-
-
文字列:定数(改行・タブ)
改行・タブの定数 これらの定数は、使用前に定義する必要はありません。コード中のど …
-
-
日付時刻:経過時間を取得( Timer 関数 )
Timer 関数の使い方 【書式】 result = Timer () 【戻り値 …
-
-
文字列:指定した文字コードに対応する文字を返す(Chr 関数)
Chr 関数の使い方 【書式】 result = Chr ( code ) 引数 …
-
-
VBA の演算子(比較演算子)
比較演算子 比較演算子による演算の結果は「真」の場合は「True」、「偽」の場合 …
- PREV
- Option Compare ステートメント
- NEXT
- データ型変換関数