VBAのディクショナリー(Dictionary)のループ処理
Dictionaryクラスは、参照設定でMicrosoft Scripting Runtimeを追加するか、CreateObject関数を利用する必要があります。
-
Dictionaryクラスのインデックスを使ったループ処理。Dictionaryのインデックスは0から始まります。この例は参照設定でMicrosoft Scripting Runtimeを追加している場合です。
Sub Sample1() Dim map As New Dictionary, i As Long Call map.Add("A", "あいうえお") Call map.Add("B", "かきくけこ") Call map.Add("C", "さしすせそ") Call map.Add("D", "たちつてと") For i = 0 To map.Count - 1 Step 1 Debug.Print "Key=" & map.Keys(i) & ", Value=" & map.Items(i) Next i Set map = Nothing End Sub
結果
Key=A, Value=あいうえお Key=B, Value=かきくけこ Key=C, Value=さしすせそ Key=D, Value=たちつてと
Dictionaryクラスで、インデックスを元に値を取得するにはItemsメソッドを利用します。キーの値はKeysメソッドを利用します。
-
DictionaryクラスのFor~Eachでのループ処理。値を保存する変数はVariant型である必要があります。この例ではCreateObject関数を利用しました。
Sub Sample2() Dim map As Object, key As Variant Set map = CreateObject("Scripting.Dictionary") Call map.Add("E", "なにぬねの") Call map.Add("F", "はひふへほ") Call map.Add("G", "まみむめも") Call map.Add("H", "やゆよ") For Each key In map Debug.Print "Key=" & CStr(key) & ", Value=" & map.Item(key) Next Set map = Nothing End Sub
結果
Key=E, Value=なにぬねの Key=F, Value=はひふへほ Key=G, Value=まみむめも Key=H, Value=やゆよ
Dictionaryクラスで、キーの値を元に値を取得するにはItemプロパティを利用します。
広告