Visual Basic for Applications:
Использование ассоциативных массивов
Как это сделать:
В VBA объект Dictionary
предоставляет функционал, аналогичный ассоциативным массивам. Прежде всего, вам нужно добавить ссылку на Microsoft Scripting Runtime, чтобы использовать его:
- В редакторе VBA перейти в Инструменты > Ссылки…
- Установить флажок “Microsoft Scripting Runtime” и нажать ОК.
Вот как объявить, заполнить и получить доступ к элементам в Dictionary
:
Dim sampleDictionary As Dictionary
Set sampleDictionary = New Dictionary
' Добавление элементов
sampleDictionary.Add Key:="Name", Item:="John Doe"
sampleDictionary.Add Key:="Age", Item:=29
sampleDictionary.Add Key:="Occupation", Item:="Engineer"
' Доступ к элементам
Debug.Print sampleDictionary.Item("Name") ' Вывод: John Doe
Debug.Print sampleDictionary.Item("Age") ' Вывод: 29
' Проверка существования ключа
If sampleDictionary.Exists("Occupation") Then
Debug.Print "Ключ Occupation существует"
End If
' Удаление элементов
sampleDictionary.Remove("Occupation")
' Перебор словаря
For Each Key In sampleDictionary.Keys
Debug.Print Key & ": " & sampleDictionary.Item(Key)
Next Key
Подробнее
Объект Dictionary
внутри взаимодействует с компонентами Windows Scripting Host. Таким образом, это позднепривязанный COM-объект, который был обычным способом расширения функциональности VBA в прошлом. Его использование в VBA может значительно улучшить способность языка манипулировать сложными наборами данных без наложения жесткой структуры, как это видно в традиционных массивах или диапазонах Excel.
Одним из ограничений, которые следует иметь в виду, является то, что доступ к Dictionary
требует установки ссылки на Microsoft Scripting Runtime, что может усложнить распространение ваших проектов VBA. Альтернативы, такие как Коллекции, существуют в VBA, но они не имеют некоторых ключевых функций Dictionary
, таких как возможность легко проверить существование ключа без вызова ошибки.
В более новых контекстах программирования языки вроде Python предлагают встроенную поддержку ассоциативных массивов (также известных как словари в Python) без необходимости добавления внешних ссылок. Эта встроенная поддержка упрощает процесс и предлагает более продвинутые функции “из коробки”. Тем не менее, в рамках VBA и для конкретных приложений, направленных на автоматизацию задач в пакете Microsoft Office, использование объекта Dictionary
остается мощным и актуальным методом для структур данных, подобных ассоциативным массивам.