即時ウィンドウでDictionaryを「値」でソートして出力するワンライナー
Scripting.Dictionary は順序を保持しませんが、Itemsを配列として取得 → ソート → キーを逆引きして出力すれば「値順」で一覧を確認できます。
ワンライナー例(即時ウィンドウに貼り付け)
For Each v In SortArray(dict.Items): For Each k In dict.Keys: If dict(k)=v Then Debug.Print k & " => " & v: Exit For: Next: Next
VB補助関数(標準モジュールに置いておく)
Function SortArray(arr As Variant) As Variant
Dim tmp As Variant, i As Long, j As Long, t As Variant
tmp = arr
For i = LBound(tmp) To UBound(tmp) - 1
For j = i + 1 To UBound(tmp)
If tmp(i) > tmp(j) Then
t = tmp(i): tmp(i) = tmp(j): tmp(j) = t
End If
Next j
Next i
SortArray = tmp
End Function
VB実行例
Sub TestDictSortByValue()
Dim dict As Object
Set dict = CreateObject("Scripting.Dictionary")
dict.Add "C", "Cherry"
dict.Add "A", "Apple"
dict.Add "B", "Banana"
Stop ' ← 即時ウィンドウでワンライナーを実行
End Sub
VB即時ウィンドウで:
For Each v In SortArray(dict.Items): For Each k In dict.Keys: If dict(k)=v Then Debug.Print k & " => " & v: Exit For: Next: Next
VB出力:
A => Apple
B => Banana
C => Cherry
💡 ポイント
dict.Itemsをソートして値順に並べる- 値からキーを逆引きして「キー => 値」の形式で出力
- ワンライナーなので即時ウィンドウに直接貼り付けて実行可能
👉 この方法を覚えておけば「Dictionaryを値でソートして一覧表示」できるので、デバッグや確認がさらに効率的になります。

