Dictionary の Items・Keys
Excel VBAで Dictionary を使うときに便利なのが、
Keysプロパティ(全キー一覧)と Itemsプロパティ(全値一覧)です。
初心者向けに、コード例やテンプレートをかみ砕いて説明します。
基本の考え方
- Keys → 登録されているキーを配列で返す。
- Items → 登録されている値を配列で返す。
- Count → 登録件数を返す。
- 対応関係 → KeysとItemsは同じインデックスでペアになっている。
テンプレ1:Keysで全キーを取得
Sub Dict_KeysExample()
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:Itemsで全値を取得
Sub Dict_ItemsExample()
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:KeysとItemsをペアで扱う
Sub Dict_KeysItemsPair()
Dim dict As Object: Set dict = CreateObject("Scripting.Dictionary")
dict.Add "C001", "東京"
dict.Add "C002", "大阪"
dict.Add "C003", "名古屋"
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- 結果:
キー=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 keysArr As Variant: keysArr = dict.Keys
Dim itemsArr As Variant: itemsArr = dict.Items
For i = LBound(keysArr) To UBound(keysArr)
ws.Cells(i, 1).Value = keysArr(i)
ws.Cells(i, 2).Value = itemsArr(i)
Next i
End Sub
VB- ポイント:
- A列にキー、B列に値を出力。
- 全件を表形式で展開できる。
例題で練習
'例1:全キーを取得
Sub Example1()
Dict_KeysExample
End Sub
'例2:全値を取得
Sub Example2()
Dict_ItemsExample
End Sub
'例3:キーと値をペアで扱う
Sub Example3()
Dict_KeysItemsPair
End Sub
'例4:全件をシートに展開
Sub Example4()
Dict_OutputToSheet
End Sub
VB初心者向けポイント
- Keysでキー一覧、Itemsで値一覧 → 配列として扱える。
- KeysとItemsは同じ順序 → インデックスでペアを確認できる。
- For EachループでもOK → 全件を順番に処理可能。
- シート展開も簡単 → 表形式にすれば見やすい。
- Countで件数確認 →
dict.Countで登録件数がわかる。
👉 この「Items・Keysテンプレ」を覚えておけば、Dictionaryに登録したデータを 一覧表示・表展開・配列処理 まで自在に扱えるようになります。
