如何根据 VBA 中的键检索字典中的值

How to retrieve the value in a Dictionary based on key in VBA

我有这样的字典:

Set Desk = CreateObject("Scripting.Dictionary")
For Index = 1 To NoOfDesks
   Desk.Add Cells(15 + Index, 4).Value, Index
Next

我有兴趣根据索引获取值。我试过这样做:

MsgBox Desk.Items()(1)

但是我无法获取值。它返回一个整数。它应该是一个字符串。需要一些指导。

您得到的正是您所要求的:当您添加项目时,您为 Key 指定了 Cells(15 + Index, 4),为项目Index 作为 Integer,您将获得 Integer

如果可能,使用 CreateObject 添加对 Microsoft Scripting Runtime 的引用而不是 late-binding:您将获得 IntelliSense,这使得使用不熟悉的 API:

您的代码如下所示:

Set Desk = New Dictionary
For Index = 1 To NoOfDesks
   Desk.Add Index, Cells(15 + Index, 4).Value
Next

需要注意的一件事是,字典键必须是唯一的 - 你很幸运,第 4 列中没有重复项,否则很明显你已经颠倒了字典的键和值。

试试这个:

Sub test()
    Dim Desk As Object, NoOfDesks&, Index&, Key As Variant
    Set Desk = CreateObject("Scripting.Dictionary")

    NoOfDesks = 100

    For Index = 1 To NoOfDesks
       Desk.Add Cells(15 + Index, 4).Value, Index
    Next
    For Each Key In Desk
        Debug.Print Key, Desk(Key)
    Next
End Sub