在VBA

时间:2018-05-21 05:00:45

标签: excel vba excel-vba sortedlist

我熟悉在VBA中使用词典,但我想尝试一下SortedList。我通读了msdn doc并认为它使用与字典相同的.Add结构。

我一直在努力实际填充SortedList。我不确定我所做的与this answerHow to make a list in VBA (not a dictionary)?有什么不同。 我认为VTC我自己的问题是重复的,但不知怎的,这不是一回事。

我使用的是一个简单的清单:

enter image description here

这是代码 -

Option Explicit

Sub testing()

    Dim sortList As Object
    Dim dict As Object
    Set sortList = CreateObject("System.Collections.SortedList")
    Set dict = CreateObject("Scripting.Dictionary")
    Dim i As Long
    Dim key As Variant
    Dim item As Variant

    For i = 1 To 7
        key = Sheet1.Cells(i, 1)
        item = Sheet1.Cells(i, 2)
        dict.Add key, item
        sortList.Add key, item
    Next

End Sub

我甚至采取了额外步骤(以防万一)并完成了所有Variant因为我知道SortedList想要Objects

我似乎无法从SortList

中检索任何内容

我错过了什么?

我试图以我检索词典的方式检索它

For Each key In sortList.keys
    Sheet1.Cells(i, 6) = key
    Sheet1.Cells(i, 7) = sortList.item(key)
Next

1 个答案:

答案 0 :(得分:0)

我从SortedList

中获取了错误的键和项目
For i = 0 To sortList.Count - 1
    key = sortList.getkey(i)
    item = sortList.item(key)
    Sheet1.Cells(i + 1, 6) = key
    Sheet1.Cells(i + 1, 7) = item
Next

与词典不同 -

i = 1
For Each key In dict
    Sheet1.Cells(i, 6) = key
    Sheet1.Cells(i, 7) = dict(key)
    i = i + 1
Next