辞書 Dictionary、Keys メソッドと Items メソッドを使用したループ処理

このコードは、VBA (Visual Basic for Applications) において Dictionary オブジェクトを使用し、Keys メソッドと Items メソッドを利用して辞書のキーと値をループ処理する方法を示しています。

' 辞書 Dictionary、Keys メソッドと Items メソッドを使用したループ処理
Private Sub Dictionary_ForEach_Keys_Items()
    Dim members As Dictionary
    Set members = New Dictionary

    With members
        .Add "m01", "Bob"
        .Add "m02", "Tom"
        .Add "m03", "Ivy"
    
        Dim i As Long
        Dim myItems As Variant
        myItems = .Items
        For i = LBound(myItems) To UBound(myItems)
            Debug.Print i, myItems(i)
        Next i
    
        Dim myKeys As Variant
        myKeys = .Keys
        For i = LBound(myKeys) To UBound(myKeys)
            Debug.Print i, myKeys(i), .Item(myKeys(i))
        Next i
    End With
End Sub

1. 辞書 (Dictionary) の生成と初期化

Dim members As Dictionary
Set members = New Dictionary
  • まず、Dictionary 型のオブジェクト members を作成し、新しい DictionarySet で初期化しています。Dictionary はキーと値のペアを格納するコレクションです。

2. 辞書へのキーと値の追加

With members
.Add "m01", "Bob"
.Add "m02", "Tom"
.Add "m03", "Ivy"
  • With ステートメントを使って、members 辞書にキー "m01", "m02", "m03" を追加し、それぞれに "Bob", "Tom", "Ivy" の値を設定しています。

3. Items メソッドによる値のループ処理

Dim i As Long
Dim myItems As Variant
myItems = .Items
For i = LBound(myItems) To UBound(myItems)
Debug.Print i, myItems(i)
Next i
  • .Items メソッドは、辞書内のすべての値を配列として返します。
  • LBoundUBound を使用して、配列 myItems の最初の要素から最後の要素までループし、それぞれの値を Debug.Print で出力します。

4. Keys メソッドによるキーのループ処理とそのキーに対応する値の取得

Dim myKeys As Variant
myKeys = .Keys
For i = LBound(myKeys) To UBound(myKeys)
Debug.Print i, myKeys(i), .Item(myKeys(i))
Next i
  • .Keys メソッドは、辞書内のすべてのキーを配列として返します。
  • LBoundUBound を使用して、配列 myKeys の最初の要素から最後の要素までループします。
  • ループの中で、各キーとそのキーに対応する値を Debug.Print で出力します。

具体的には、次のような出力がされます。

Debug.Print i, myKeys(i), .Item(myKeys(i))

この行では、i は配列内のインデックス番号、myKeys(i) はそのインデックスに対応するキー、.Item(myKeys(i)) はそのキーに対応する値を意味します。

全体の流れ

  1. 辞書の作成: Dictionary オブジェクト members を作成し、キーと値のペアを追加します。
  2. 値の取得 (Items): 辞書内の全ての値を配列として取得し、その値をループして表示します。
  3. キーの取得 (Keys): 辞書内の全てのキーを配列として取得し、そのキーと対応する値をループして表示します。

イミディエイトウィンドウ

 0            Bob
 1            Tom
 2            Ivy
 0            m01           Bob
 1            m02           Tom
 2            m03           Ivy

まとめ

このコードは、Dictionary オブジェクトを利用して、キーと値のペアを管理し、それらをループ処理して出力する方法を示しています。Items メソッドと Keys メソッドを組み合わせて、辞書の中身を効率的に操作することができます。

Follow me!