Исходный текст
Option Explicit
Call TestDictionary()
'==============================================================================
'Создать и протестировать объект Dictionary
'==============================================================================
Sub TestDictionary()
Dim dict, EmptyDict, keyArray, itemArray, element, NewKey, msg, RetVal
'В приложении можно определить несколько хранилищ глобальных данных
Set dict = ThisApplication.Dictionary(1)
Set EmptyDict = ThisApplication.Dictionary("Two")
'Установим режим сравнения
dict.CompareMode = 1
'Добавить две переменные
If Not dict.Exists("name") Then dict.Add "name", "Anna"
If Not dict.Exists("number") Then dict.Add "number", 33
'Проверить чувствительность к регистру для имен переменных
'Переменная NAME уже определена?
MsgBox "Переменная NAME определена: " & dict.Exists("NAME") & _
Chr(13) & "Переменная name определена: " & dict.Exists("name")
'Переименовать переменную
dict.Key("name") = "NewName"
'Попытка обратиться к несуществующей переменной SomeVarReal приведет
'к ее созданию и добавлению в хранилище
dict.Item("SomeVarReal") = 3.1416
MsgBox "Значение переменной SomeVarReal: " & dict.Item("SomeVarReal")
'Таким способом тоже можно создать новую переменную (она будет создана как Empty)
MsgBox "Значение переменой SomeAnotherVar: " & TypeName(dict.Item("SomeAnotherVar"))
'Извлечь имена переменных в массив variant
keyArray = dict.Keys
For Each element In keyArray
msg = msg & element & ";" & Chr(13)
Next
MsgBox "Имена хранимых глобальных переменных (всего " & dict.Count & "): " & Chr(13) & msg
'Извлечь значения переменных в массив variant
msg = ""
itemArray = dict.Items
For Each element In itemArray
msg = msg & element & ";" & Chr(13)
Next
MsgBox "Значения глобальных переменных: " & Chr(13) & msg
'Очистить хранилище, если пользователь согласится
RetVal = MsgBox("В созданных хранилищах определено переменных:" & Chr(13) & _
"EmptyDict: " & EmptyDict.Count & Chr(13) & _
"Dict: " & dict.Count & Chr(13) & _
"Удалить все глобальные переменные?", vbQuestion + vbYesNo, "Очистка хранилища")
If RetVal <> vbNo Then
dict.RemoveAll
MsgBox dict.Count & " переменных в хранилище."
End If
Set dict = Nothing
End Sub
'==============================================================================