尝试从VBA字典中检索值,如果密钥未被使用会引发错误?

我已经使用了多种其他语言的字典(不pipe它们是否被调用),但总是有一种方法可以用on参数来调用:

A)如果参数被用作键,则返回相关的值
B)以某种方式指示参数不被用作关键字

我已经被迫进入一个职位,在那里我必须学习excel / VBA,并且在缺乏存在方法让我去寻找别的东西之前大约五分钟使用集合类。 普遍的共识似乎是脚本.Dictionary类是其他语言中的关联数组/字典/散列表的VBA等价物。

我不喜欢外表的唯一方法是我可以看到检索与给定键相关联的值的唯一方法是使用.items属性(显式地或通过scripting.Dictionary(“key”)) )。 但是,如果在字典中没有使用密钥,而不是做任何事情来表明问题,它就会添加它。

我知道我可以使用一个if结构.exists作为testing来实现相同的function,并且可以编写我自己的函数,如果存在testing失败时会引发错误,但是看起来很多东西是实现什么是核心function在Python(引发KeyError),PHP(引发一个通知),Java(地图返回null – 虽然这不一定是理想的情况下HashMaps空实际上是一个有效的值 – 但它确实工作作为HashTables的指标)。

那么是否有任何方法试图通过密钥来检索值,如果密钥没有被使用,会做一些事情(理想情况下抛出一个错误),而不是默默地添加它? 谷歌没有提供任何答案 – 但也许我只是没有措词search的好。

当您访问不存在的密钥时, Dictionary会添encryption钥,这让我感到不方便。

只需使用Collection并自己编写缺less的Exist函数,例如

 Function ExistsInCollection(ByVal c As Collection, ByVal key As Variant) As Boolean On Error GoTo not_exists c.Item key ExistsInCollection = True not_exists: End Function