コレクションについて解説 文字列・数値・オブジェクトへの参照を要素として格納することができるオブジェクト 変数と同様にDimステートメントで宣言した後、 宣言方法1: オブジェクトなだけあってプロパティとメソッドが存在する 1.プロパティの場合: ▼処理結果▼ データ型は「Object」で宣言
コレクションとは
必ず、要素(item)とインデックス番号(key)がペアで格納される
※コレクションに格納されている要素のことをメンバとも呼ぶ
インデックス番号は配列と異なり必ず「1」から開始する
配列とどう違うのか、配列とコレクションそれぞれの良さについては以下のページを参照
▼とてもよくわかる解説▼
thom.hateblo.jp
わかりやすくて感動しちゃった…
Setステートメントでオブジェクトへの参照を変数に代入してから使用するか
またはDimステートメントのみでその両方を行うか、2つの方法がある記述方法の解説
記述を構成する順序
Dim コレクション名 As Collection
Set コレクション名 = New Collection
※配列とは異なり変数の後のカッコは不要
宣言方法2:
Dim コレクション名 As New Collectionプロパティとメソッド
両者の使用時に追加する引数は、以下の順で指定のこと
・第一引数 item(追加したい要素)※必須
・第二引数 key(インデックス番号)※省略可
・第三引数 Before / After(名前付き引数)※省略可・省略するとAddで要素を追加する場合、最後尾に追加される構文
Count:要素数を返す コレクション名.Count
2.メソッドの場合:
Add:要素を追加する コレクション名.Add item BeforeまたはAfter=:要素数
Remove:要素を削除する コレクション名.Remove item BeforeまたはAfter=:要素数
Item:指定した文字列に対応する要素を返す コレクション名.Item item BeforeまたはAfter=:要素数
▼Addメソッドによる要素の追加 記述例▼Sub Col_test()
Dim testCol As New Collection '宣言
testCol.Add "001"
testCol.Add "tama-shi"
Debug.Print testCol(1); vbCrLf & testCol(2)
End Sub
オブジェクトを集合させたコレクション
以下のコレクションはApplicationオブジェクトのメンバであるため
「Application.コレクション」と指定するのが本来の形だがコレクション名のみ記載でも問題ない
・Forms / Reports:開いている全フォームまたは全レポート
・Printers:使用可能な全プリンタ
・Me.Controls:今いるフォームまたはレポートの中の全コントロール
・CurrentProject.AllForms / CurrentProject.AllReports: データベースのすべてのフォーム/レポート
※AllFormsオブジェクトのインデックスは0から始まるとのこと、名前で指定したほうが確実
▼Applicationオブジェクトのコレクション 記述例▼'あるフォーム内にボタン「btn1」とラベル「lbl1」が設置してあるとして…
Private Sub btn1_Click()
Dim obj as Object
For Each obj In Printers
Me.lbl1.caption = Me.lbl1.Value & obj.DeviceName
Next
End Sub