Вы ищете глобальные переменные, которые являются переменными, сохраняющимися в памяти на протяжении всего выполнения программы.
Практически:
Dim myDictionary As Scripting.Dictionary '<-- on top of module, outside of any macro/function. This makes the variable LOCAL to the module (i.e. accessible all over the subs and functions of the module)
'Alternatively (one or the other)
Public myDictionary As Scripting.Dictionary '<-- the variable is GLOBAL to all the program.
Sub init() '<-- initialize your dictionary once
Set myDictionary = New Scripting.Dictionary
myDictionary.add "Apples", 50
myDictionary.add "Bananas", 40
End Sub
Function a() As Integer
...
a = myDictionary("Apples") '<-- use your dictionary when you want
...
End Function
Вы можете позвонить на init
внутри события ThisWorkbook.Open
, чтобы, как только ваша рабочая книга была открыта, ваши словари жили всеза исполнение.