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' ??
uj5u.com熱心網友回復:
應該這樣用:
Public Sub TEST()
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
uj5u.com熱心網友回復:
因為你對字典的理解有問題,拿一本漢語詞典,通過查找任何一個漢字(比如“復”),你可以找到這個字的詳細釋義,這個漢字就叫索引,它對應的詳細釋義就是被索引的值。再看你的代碼,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",索引值保存一個結構體或者類物件
uj5u.com熱心網友回復:
這種寫法不是太合理,RECORD_INDEX里的每一個項保存了一本只有一個項的字典,實際上只需要保存一個項就可以。
uj5u.com熱心網友回復:
能用就行,存在即合理;
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/21806.html
標籤:VBA
下一篇:請教一下關于dos操作svn
