Excel VBA 逆引き集 | 全件取得

Excel VBA
スポンサーリンク

Dictionary 全件取得

Dictionaryを使うときに「登録されている全件をまとめて取り出したい」場面があります。例えば「全キー一覧を出力」「全値一覧を出力」「キーと値のペアを表に展開」などです。初心者向けに、コード例やテンプレートをかみ砕いて説明します。


基本の考え方

  • Keysプロパティ → 全キーを配列で取得できる。
  • Itemsプロパティ → 全値を配列で取得できる。
  • Countプロパティ → 登録件数を取得できる。
  • For Eachループ → 全件を順番に処理できる。

テンプレ1:全キーを取得して出力

Sub Dict_GetAllKeys()
    Dim dict As Object: Set dict = CreateObject("Scripting.Dictionary")
    dict.Add "A001", "りんご"
    dict.Add "A002", "みかん"
    dict.Add "A003", "バナナ"

    Dim k As Variant
    For Each k In dict.Keys
        Debug.Print "キー=" & k
    Next k
End Sub
VB
  • 結果: キー=A001 キー=A002 キー=A003

テンプレ2:全値を取得して出力

Sub Dict_GetAllItems()
    Dim dict As Object: Set dict = CreateObject("Scripting.Dictionary")
    dict.Add "A001", "りんご"
    dict.Add "A002", "みかん"
    dict.Add "A003", "バナナ"

    Dim v As Variant
    For Each v In dict.Items
        Debug.Print "値=" & v
    Next v
End Sub
VB
  • 結果: 値=りんご 値=みかん 値=バナナ

テンプレ3:キーと値をペアで全件取得

Sub Dict_GetAllPairs()
    Dim dict As Object: Set dict = CreateObject("Scripting.Dictionary")
    dict.Add "C001", "東京"
    dict.Add "C002", "大阪"
    dict.Add "C003", "名古屋"

    Dim k As Variant
    For Each k In dict.Keys
        Debug.Print "キー=" & k, "値=" & dict(k)
    Next k
End Sub
VB
  • 結果: キー=C001 値=東京 キー=C002 値=大阪 キー=C003 値=名古屋

テンプレ4:全件をシートに展開

Sub Dict_OutputToSheet()
    Dim dict As Object: Set dict = CreateObject("Scripting.Dictionary")
    dict.Add "P001", "商品A"
    dict.Add "P002", "商品B"
    dict.Add "P003", "商品C"

    Dim ws As Worksheet: Set ws = Worksheets("Data")
    Dim i As Long: i = 1

    Dim k As Variant
    For Each k In dict.Keys
        ws.Cells(i, 1).Value = k
        ws.Cells(i, 2).Value = dict(k)
        i = i + 1
    Next k
End Sub
VB
  • ポイント:
    • A列にキー、B列に値を出力。
    • 全件を表形式で展開できる。

テンプレ5:Keys/Itemsを配列としてまとめて扱う

Sub Dict_KeysItemsArray()
    Dim dict As Object: Set dict = CreateObject("Scripting.Dictionary")
    dict.Add "X001", "Apple"
    dict.Add "X002", "Orange"
    dict.Add "X003", "Banana"

    Dim keysArr As Variant: keysArr = dict.Keys
    Dim itemsArr As Variant: itemsArr = dict.Items

    Dim i As Long
    For i = LBound(keysArr) To UBound(keysArr)
        Debug.Print keysArr(i), itemsArr(i)
    Next i
End Sub
VB
  • ポイント:
    • KeysとItemsは配列なので、インデックスで対応関係を確認できる。

例題で練習

'例1:全キーを取得
Sub Example1()
    Dict_GetAllKeys
End Sub

'例2:全値を取得
Sub Example2()
    Dict_GetAllItems
End Sub

'例3:キーと値をペアで取得
Sub Example3()
    Dict_GetAllPairs
End Sub

'例4:全件をシートに展開
Sub Example4()
    Dict_OutputToSheet
End Sub

'例5:Keys/Itemsを配列で扱う
Sub Example5()
    Dict_KeysItemsArray
End Sub
VB

初心者向けポイント

  • Keysで全キー一覧、Itemsで全値一覧 → 配列として扱える。
  • For Eachループで全件処理 → キーと値をペアで出力可能。
  • シート展開も簡単 → 表形式にすれば見やすい。
  • Countで件数確認dict.Count で登録件数がわかる。
  • 大量データでも高速 → 数万件でも一瞬で全件取得できる。

👉 この「全件取得テンプレ」を覚えておけば、Dictionaryに登録したデータを 一覧表示・表展開・配列処理 まで自在に扱えるようになります。

タイトルとURLをコピーしました