2012-09-11 96 views
1

我有一個數組,並在一個while循環內,我將一行數據插入字典中,然後將每個字典添加到數組中。字典數組包含所有數組元素的相同字典引用

我的設置是這樣的:

while something 

    Dim MyDict as new Scripting.Dictionary 
    MyDict.RemoveAll 


    'Add data 
    MyDict.add "something","something" 


    If Count = 0 Then 
     ReDim MyArray(0) 
    Else 
     ReDim Preserve MyArray(UBound(MyArray, 1) + 1) 
    End If 

    'Add the dictionary to the array of dictionaries 
    Set MyArray(UBound(MyArray, 1)) = MyDict 

wend 

然而,在while循環的結束點字典全陣列相同的dictionary-最後一個。我認爲通過在while循環中聲明字典並使用New,以及removeall我會避免這種情況....

如何確保每個字典不僅僅是插入最後一個字典的引用?

+4

我不明白你想要達到的目標。 您是否試過在循環中聲明MyDic outsite while循環,然後在循環中執行「Set MyDic = new Scripting.Dictionary」? – Kovags

+0

Kovags是正確的,沒有'Set'你有一個數組有n個元素保持對同一個字典實例的引用。 –

回答

2

這是Kovags告訴你:

Dim MyDict as Scripting.Dictionary 

while something  

    Set MyDict = new Scripting.Dictionary  

    'Add data  
    MyDict.add "something","something"  

    If Count = 0 Then 
     ReDim MyArray(0) 
    Else 
     ReDim Preserve MyArray(UBound(MyArray, 1) + 1) 
    End If  

    'Add the dictionary to the array of dictionaries  
    Set MyArray(UBound(MyArray, 1)) = MyDict 

wend 

...雖然我想你可能會發現它更容易使用的集合爲這個insted的數組。