アトム電器 三軒家店(有限会社 おかもとでんか)のホームページ。大阪市大正区にある町の電気屋さん。家電製品の販売、エアコン、電気工事、パソコンからリフォーム、オール電化など電気のことならなんでもお任せ下さい!アトム電器三軒家店

VBAのディクショナリー(Dictionary)のループ処理

VBA開発

Dictionaryクラスは、参照設定でMicrosoft Scripting Runtimeを追加するか、CreateObject関数を利用する必要があります。

  • Dictionaryクラスのインデックスを使ったループ処理。Dictionaryのインデックスは0から始まります。この例は参照設定でMicrosoft Scripting Runtimeを追加している場合です。

    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

    結果

    Key=A, Value=あいうえお
    Key=B, Value=かきくけこ
    Key=C, Value=さしすせそ
    Key=D, Value=たちつてと

    Dictionaryクラスで、インデックスを元に値を取得するにはItemsメソッドを利用します。キーの値はKeysメソッドを利用します。

  • DictionaryクラスのFor~Eachでのループ処理。値を保存する変数はVariant型である必要があります。この例ではCreateObject関数を利用しました。

    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

    結果

    Key=E, Value=なにぬねの
    Key=F, Value=はひふへほ
    Key=G, Value=まみむめも
    Key=H, Value=やゆよ

    Dictionaryクラスで、キーの値を元に値を取得するにはItemプロパティを利用します。