Public Sub TEST()
Set RECORD_DIC = CreateObject("Scripting.Dictionary")
Set RECORD_INDEX = CreateObject("Scripting.Dictionary")
RECORD_DIC("编号") = 111
RECORD_DIC("内容") = 5678
RECORD_INDEX.Add "a", RECORD_DIC
RECORD_DIC("编号") = 222
RECORD_DIC("内容") = 7890
RECORD_INDEX.Add "b", RECORD_DIC
Debug.Print RECORD_INDEX.Count
Debug.Print RECORD_INDEX("a")("编号")
Debug.Print RECORD_INDEX("b")("编号")
End Sub
'''输出结果都是222 怎么回事?
'''RECORD_INDEX("a")("编号")和RECORD_INDEX("a")("编号") 为什么输出都是'222' ??
Set RECORD_INDEX = CreateObject("Scripting.Dictionary") Set RECORD_DIC = CreateObject("Scripting.Dictionary")
RECORD_DIC("编号") = 111
RECORD_DIC("内容") = 5678
RECORD_INDEX.Add "a", RECORD_DIC
Set RECORD_DIC = CreateObject("Scripting.Dictionary")
RECORD_DIC("编号") = 222
RECORD_DIC("内容") = 7890
RECORD_INDEX.Add "b", RECORD_DIC
Debug.Print RECORD_INDEX.Count
Debug.Print RECORD_INDEX("a")("编号")
Debug.Print RECORD_INDEX("b")("编号")
End Sub
再看你的代码,RECOD_DIC("key")=value 代表创建(如果已经存在,则是编辑)一个以key为索引,value为被索引值的字典项;最终效果是手工添加一个叫“编辑”的索引,被索引值是111;
手工添加一个叫“内容”的索引,被索引的值是5678;
编辑一个叫“编辑”的索引,被索引值是222;
编辑一个叫“内容”的索引,被索引的值是7890。
明白问题在哪了吗?
有两种改法:
1. 按你现在的思路,维护两个字典,“INDEX -> 编号”映射,“编号 -> 内容”映射
RECORD_DIC(111)=5678
RECORD_INDEX("a")=111
RECORD_DIC(222)=7890
RECORD_INDEX("b")=222
'取值
Debug.Print RECORD_DIC(RECORD_INDEX("a"))
Debug.Print RECORD_DIC(RECORD_INDEX("b"))
2. 只用一个字典,索引用"a", "b",索引值保存一个结构体或者类对象
能用就行,存在即合理;