如何检查字典中是否存在一个项目(不是键)VBA

How to check whether a item (not the key) exists in the dictionary VBA

我想检查字典中是否存在特定值。我创建了一个字典:

Set Curr = CreateObject("Scripting.Dictionary")
For Index = 1 To NoOfCurr
   Curr.Add Index, Cells(15 + Index, 5).Value
Next

我需要检查字典中是否存在某个字符串。我写了这样的代码:

Function IsInArray(stringToBeFound As String, arr As Variant) As Boolean
  IsInArray = arr.Exists(stringToBeFound)
End Function

它被这样称呼: IsInArray("USD", Curr) 而它 returns 是错误的。

我正在使用 Exists 函数,但它返回一个 False。如何更改 IsInArray 以查看美元是否在货币字典中?

您可能对 VBA 的 'Dictionary' 有误解。

你无法通过'value'获得'key',但可以通过'key'获得'value'。

在您的代码中,Curr 的索引(整数)为 'key's,货币为 'value's。这就是为什么你不能确定 "USD" 包含在词典 'Curr'.

中的原因

如果要检查 "USD" 是否存在于 E 列的单元格中,您应该使用货币作为 'key's。

以下代码可能是您想要的,您可以使用 'IsInArray("USD", Curr)' 获得正确答案。

Set Curr = CreateObject("Scripting.Dictionary")
For Index = 1 To NoOfCurr
    Curr.Add Cells(15 + Index, 5).Value, Index 'currency is used as keys.
Next

Function IsInArray(stringToBeFound As String, arr As Variant) As Boolean
    IsInArray = arr.Exists(stringToBeFound)
End Function