If you have a normal dictionary key and you set a variable equal to that key's definition and then change the value of that variable, the definition within the dictionary won't change unless you re-save it in the dictionary. However, as you can see by running the sub below, if you have a nested dictionary and change anything within it, you don't need to resave it in the original dictionary for the changes to take affect. Anything you add or change will still be reflected in the original dictionary. The only exception is when you set the dictionary equal to Nothing. In that case, the nested dictionary will still exist in the original dictionary. Is there a good explanation for this?

Sub dictionarytest()

Set dic = CreateObject("Scripting.Dictionary")

Set dic2 = CreateObject("Scripting.Dictionary")

MsgBox dic2.Count

dic.Add "key", dic2

dic2.Add "a", 1

dic2.Add "b", 1

'Why isn't this necessary?
'dic.item("key") = dic2

Set dic2 = dic.Item("key")

MsgBox dic2.Count

dic2.Add "c", 1

Set dic2 = Nothing

Set dic2 = dic.Item("key")

MsgBox dic2.Count


End Sub