Получить n-й ключ в словаре VBA

Можно ли извлечь n-й ключ из словаря и его значение в VBA? Что-то вроде

For i = 1 To Counter + diccompare.Count - UBound(RecSource)
WS.Cells(Lastrow + i, "A") = diccompare.Keys(UBound(RecSource) - Counter + i)
Next

Где я пытаюсь назначить Cell (Lastrow + i) значение ключа в словаре diccompare (UBound (RecSource) - Counter + i)

excel,vba,excel-vba,dictionary,

2

Ответов: 2


3 принят

Не уверен, что я полностью тебя достал, что-то вроде этого

Sub KeyTest()

Dim d As New Scripting.Dictionary

d.Add "Test1", 1
d.Add "Test2", 2
d.Add "Test3", 99

Debug.Print d.Keys()(1)

End Sub

2

вы можете использовать эту вспомогательную функцию:

Function GetNthKey(dict As Dictionary, nth As Long)
    Dim arr As Variant
    With dict
        arr = .Keys
        GetNthKey = arr(nth - 1)
    End With
End Function

для использования в вашем «основном» коде следующим образом:

Dim diccompare As Dictionary 

Set diccompare = New Dictionary

With diccompare
    .Add 1, "a"
    .Add 2, "b"
    .Add 3, "c"
    .Add 4, "d"
End With

MsgBox GetNthKey(diccompare, 2) '<--| returns "2", i.e. the 2nd key
первенствует, VBA, Excel-VBA, словарь,
Похожие вопросы