Перейти к содержимому
Наше приложение «Дешевые авиабилеты» в AppGallery >>

VBA Excel. Объект Dictionary (свойства, методы, примеры)

    Создание объекта Dictionary с помощью кода VBA Excel. Раннее и позднее связывание. Методы и свойства словаря и синтаксис выражений с ними. Примеры кода.

    Dictionary – это объект, предназначенный для записи, хранения и использования пар, состоящих из ключа и элемента данных.

    Создание объекта Dictionary

    Раннее связывание:

    или

    Позднее связывание:

    Чтобы использовать раннее связывание, необходимо подключить в редакторе VBA ссылку на библиотеку Microsoft Scripting Runtime, если она еще не подключена (в меню Tools–>References…):

    Раннее связывание позволяет использовать при написании кода VBA Excel лист выбора и вставки свойств и методов объекта Dictionary (лист подсказок):

    Лист подсказок отображается автоматически после ввода точки или, в иных случаях, вызывается сочетанием клавиш «Ctrl+Пробел».

    Методы и свойства словаря

    Методы объекта Dictionary

    Метод Add
    Метод Add добавляет в словарь новую пару ключ–элемент.

    • Ключ – обязательный аргумент, представляющий ключ добавляемой пары.
    • Элемент – обязательный аргумент, представляющий элемент добавляемой пары.

    Если добавляемый ключ в словаре уже есть, VBA Excel сгенерирует ошибку.

    Метод Exists
    Метод Exists возвращает логическое значение, указывающее, существует ли в словаре указанный ключ. True – указанный ключ существует, False – указанный ключ не существует.

    Метод Items
    Метод Items возвращает массив всех элементов в словаре.

    Метод Keys
    Метод Keys возвращает массив всех ключей в словаре.

    Метод Remove
    Метод Remove удаляет из словаря одну пару ключ–элемент.

    Если указанный ключ не существует, произойдет ошибка.

    Метод RemoveAll
    Метод RemoveAll удаляет из словаря все пары ключей и элементов.

    Свойства объекта Dictionary

    Свойство CompareMode
    Свойство CompareMode задает или возвращает режим сравнения ключей в словаре. Используется для чтения и записи.

    Необязательный аргумент Сравнение используется только при записи и может принимать следующие значения:

    • –1 (vbUseCompareOption) – выполняется сравнение, заданное оператором Option Compare.
    • 0 (vbBinaryCompare) – выполняется двоичное сравнение.
    • 1 (vbTextCompare) – выполняется текстовое сравнение.

    По умолчанию выполняется двоичное сравнение, при котором значение свойства CompareMode равно 0 (vbBinaryCompare).

    Свойство Count
    Свойство Count возвращает количество элементов в словаре. Только для чтения.

    Свойство Item
    Свойство Item задает или возвращает элемент для указанного ключа в словаре. Используется для чтения и записи.

    • Ключ – обязательный аргумент, представляющий из себя существующий ключ для чтения или изменения существующего элемента, или новый ключ для создания новой пары ключ–элемент.
    • Элемент – необязательный аргумент, представляющий выражение, которое заменяет существующий элемент с существующим ключом или добавляет новый элемент в пару ключ–элемент с новым ключом.

    Если при создании с новым ключом новой пары ключ–элемент аргумент Элемент не указан, значение элемента будет пустым (Empty).

    Свойство Key
    Свойство Key задает новое значение ключа для существующего ключа в словаре.

    • Ключ – обязательный аргумент, представляющий из себя существующий ключ.
    • НовыйКлюч – обязательный аргумент, представляющий выражение, значение которого заменяет существующий ключ.

    Если указанный ключ отсутствует в словаре, произойдет ошибка.

    Примеры кода с Dictionary

    Пример 1
    Заполнение словаря парами ключ-элемент и извлечение элементов с помощью свойства Item:

    Пример 2
    Замена элемента в существующей паре ключ-элемент, добавление новой пары ключ-элемент и добавление нового ключа без указания элемента с помощью свойства Item:

    Обратите внимание, добавить новый ключ без указания элемента можно только путем присвоения значения выражения переменной или, как во втором примере, функции MsgBox:

    Пример 3
    Извлечение ключей и элементов в массив:

    Содержание рубрики VBA Excel по тематическим разделам со ссылками на все статьи.

    5 комментариев для “VBA Excel. Объект Dictionary (свойства, методы, примеры)”

    1. Отличная статья.
      Евгений, а словари могут быть вложенными? например, значением может являться другая структура данных, например, другой словарь или коллекция?

      1. Евгений

        Привет, Фарин!
        Словарь поддерживает любые типы данных. Причем не только в значениях, но и в ключах. Есть одно исключение: ключи не могут быть массивами. Пример с вложенным словарем:

    2. Заполнение и изменение словаря возможно без использования ключевого слова Item

      Вместо
      'Меняем элемент в паре с ключом 1
      myDict.Item(1) = "Понедельник"
      'Добавляем новую пару ключ-элемент
      myDict.Item(4) = "Четверг"

      Можно и использовать
      myDict(1) = "Понедельник"
      'Добавляем новую пару ключ-элемент
      myDict(4) = "Четверг"

    3. Алексей

      Здравствуйте!
      Озадачил дурацкий вопрос:
      Возможно ли сохранение значений переменных в самой пользовательской книге, а не отдельном файле без использования скрытия листов/ячеек, и имён Names?

    4. Да. Можно.
      Копать в сторону ThisWorkbook.CustomDocumentProperties

    Обсуждение закрыто.