【发布时间】:2015-11-17 18:25:39
【问题描述】:
我正在尝试创建一个字典,其中包含每个键的集合。这样做的原因是我想稍后从同一个键中检索多个值。在此示例中,我希望获得唯一键的总值 (val) 以及出现次数 (n):
sub update()
Dim dict As Dictionary
Dim coll As Collection
Set dict = New Dictionary
Set coll = New Collection
coll.Add 100, "val"
coll.Add 3, "n"
dict.Add "coll", coll
Debug.Print dict.item("coll")("val")
Debug.Print dict.item("coll")("n")
到目前为止,这工作正常,当我尝试更新集合中的值时会出现问题(对象不支持这个):
dict.item("coll")("val") = dict.item("coll")("val") + 100
我尝试了什么:
如果我使用数组而不是集合,则不会出现错误,但值不会改变。 它仅在我将集合读出到变量、更改值、创建新集合、从字典中删除旧集合并添加新集合时才有效。
有没有办法像我上面的方法一样在一行中做到这一点? 我也很乐意为该任务提供替代解决方案。
【问题讨论】:
-
对于类似的问题,我使用了用户定义的对象(类),然后将类对象添加到集合中。 (UDO 可以有多个属性;甚至可以将集合作为其属性之一)。关键是一些唯一的字符串。您可能可以对 Dictionary 对象做类似的事情,就像对 Collection 一样,但我没有使用过。
-
感谢您的建议!不幸的是我还没有真正进入UDO,必须仔细看看它..
标签: excel vba dictionary collections