如何根据 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
我有这样的字典:
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