You can place your dictionary in a static variable or private module variable:
Code:
Sub Foo()
Static d As Dictionary
If d Is Nothing Then
Set d = New Dictionary
End If
End Sub
Code:
Private d As Dictionary
Sub Bar()
If d Is Nothing Then
Set d = New Dictionary
End If
'//Code
End Sub
Such variable are lost for a variety of reason - notably, if your vba program crashes or if you hit the reset button, so they aren't 100% reliable for mission critical purposes. If you need to save data between excel sessions its another story - you have to devise some kind of persistent storage strategy (often in Excel this just means writing values to a hidden sheet or something along those lines).