Создание объекта Collection с помощью кода VBA Excel. Методы коллекции и синтаксис выражений с ними. Свойство Count и примеры кода.
Создание объекта Collection
Создать новый экземпляр Collection в коде VBA Excel можно двумя строками:
1 2 |
Dim myColl As Object Set myColl = New Collection |
или одной строкой:
1 |
Dim myColl As New Collection |
Лист автоматической вставки объектов, методов и свойств (лист подсказок) предоставит при написании кода VBA Excel простой доступ к методам Add, Item, Remove и свойству Count объекта Collection:
Лист подсказок отображается автоматически после ввода точки или, в иных случаях, вызывается сочетанием клавиш «Ctrl+Пробел».
Методы и свойство коллекции
Метод Add
Метод Add добавляет новый элемент в объект Collection.
Синтаксис метода Add:
1 |
Collection.Add Элемент, [Ключ], [До], [После] |
Компоненты метода Add:
- Collection – обязательный компонент, представляющий выражение (переменную), возвращающее объект Collection.
- Элемент (item) – обязательный аргумент, представляющий выражение любого типа, возвращающее элемент, который необходимо добавить в коллекцию.
- Ключ (key) – необязательный аргумент, представляющий строковое выражение, задающее уникальный ключ, который может использоваться вместо индекса позиции для доступа к элементу коллекции.
- До* (before) – необязательный аргумент, указывающий на позицию существующего элемента в коллекции, перед которым будет добавлен новый элемент.
- После* (after) – необязательный аргумент, указывающий на позицию существующего элемента в коллекции, после которого будет добавлен новый элемент.
* Аргументы «До» и «После» не могут применяться одновременно. Если аргументу «До» или «После» присвоено числовое значение, оно должно быть в пределах диапазона от 1 до значения свойства Collection.Count. Если это строка, она должна соответствовать одному из ключей существующих в коллекции элементов.
Метод Item
Метод Item возвращает элемент объекта Collection по индексу позиции или по ключу.
Синтаксис метода Item объекта Collection:
1 |
Collection.Item (Index) |
Компоненты метода Item:
- Collection – обязательный компонент, представляющий выражение (переменную), возвращающее объект Collection.
- Index – обязательный аргумент, представляющий выражение, возвращающее номер (индекс) позиции элемента коллекции или его уникальный ключ.
Метод Remove
Метод Remove удаляет элемент из объекта Collection по индексу позиции или по ключу.
Синтаксис метода Remove объекта Collection:
1 |
Collection.Remove (Index) |
Компоненты метода Remove:
- Collection – обязательный компонент, представляющий выражение (переменную), возвращающее объект Collection.
- Index – обязательный аргумент, представляющий выражение, возвращающее номер (индекс) позиции элемента коллекции или его уникальный ключ.
Свойство Collection.Count
Свойство Count объекта Collection возвращает количество элементов в коллекции.
Примеры кода с объектом Collection
Пример 1
Создание нового экземпляра объекта Collection, добавление в коллекцию трех элементов, определение количества элементов в коллекции, извлечение одного и того же элемента по индексу и по ключу:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
Sub Primer1() 'Создаем новый экземпляр 'объекта Collection Dim myColl As New Collection 'Добавляем три элемента myColl.Add "Первый элемент" myColl.Add "Второй элемент", "Ключ 2" myColl.Add "Третий элемент" 'Определение количества элементов MsgBox myColl.Count 'Извлечение одного и того же элемента 'коллекции по индексу и по ключу MsgBox myColl.Item(2) & _ " (извлечен по индексу)" MsgBox myColl.Item("Ключ 2") & _ " (извлечен по ключу)" End Sub |
Пример 2
Добавление элементов в коллекцию с использованием аргументов «До» и «После»:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
Sub Primer2() Dim myColl As New Collection 'Добавляем три первых элемента myColl.Add "Второй элемент" myColl.Add "Третий элемент" myColl.Add "Пятый элемент" 'Следующий элемент вставляем перед первым myColl.Add "Первый элемент", , 1 'Следующий элемент вставляем после третьего 'с учетом добавленного предыдущей строкой myColl.Add "Четвертый элемент", , , 3 'Извлекаем первый и четвертый элементы MsgBox myColl.Item(1) MsgBox myColl.Item(4) End Sub |
Пример 3
Генерация ошибки при добавлении в коллекцию нового элемента с неуникальным ключом:
1 2 3 4 5 6 7 8 9 |
Sub Primer3() Dim myColl As New Collection On Error GoTo Instruk myColl.Add "Первый элемент", "Ключ" myColl.Add "Второй элемент", "Ключ" Exit Sub Instruk: MsgBox "Произошла ошибка: " & Err.Description End Sub |
Эта особенность объекта Collection используется для отбора уникальных значений из списка элементов.
В примере 3 пропущена строка между 5й и 6й:
Без нее сообщение об ошибке будет показываться каждый раз )
Спасибо, исправил.
Добрый день. Спасибо большое за Ваш труд. Подскажите пожалуйста, а можно ли сравнивать коллекции друг с другом?
Например, мне нужно сравнить n диапазонов , и из всех выделить только те данные, которые присутствуют в каждом из множества диапазонов.
Цикл в цикле отпадает из-за множественности диапазонов, пытаюсь сообразить что ещё можно приспособить…
Или взять за основу одну коллекцию (первый диапазон), а оттуда удалять все значения, не найденные в последующих диапазонах?
Обсуждение закрыто.