Коллекция, по сути, представляет собой массив элементов. В отличие от массива, элементы в одной коллекции могут быть разных типов, т.е. числа, строки, объекты. Кроме того она предоставляет дополнительные возможности работы с элементами. Чтобы начать работу с коллекцией, нужно ее объявить:
Dim Collect As New CollectionИзначально, объявленная коллекция не содержит элементов. Аналогично, если бы мы работали с массивом, мы могли бы записать:
Dim Mas()Теперь в коллекцию Collect можно добавить элемент:
Collect.Add 10Таким образом мы добавили в коллекцию элемент, содержащий число 10. Автоматически число элементов в коллекции увеличилось на единицу. При работе с массивом, данная запись выглядела бы так:
Redim Preserve Mas(0) Mas(0) = 10В отличии от массива, индекс первого элемента в коллекции соответствует единице. Чтобы узнать содержание первого элемента, можно написать:
a = Collect.Item(1)Для нашего случая получим число 10.
Collect.Add 20, "Count2"Таким образом обратиться к этому элементу можно двумя способами:
a = Collect.Item(2)или
a = Collect.Item("Count2")Одно из достоинств работы с коллекциями является возможность добавлять элементы не только в конец коллекции, но вставлять их между существующими элементами. Например, следующая запись добавляет новый элемент до первого элемента:
Collect.Add 30, , 1Здесь 1 - номер элемента, до которого нужно добавить новый элемент.
Collect.Add 15, , , 2Чтобы удалить элемент, используйте Remove:
Collect.Remove 1После удаления все элементы смещаются т.е. в данном случае первым элементом следует элемент, который был по счету вторым.
For i = 1 To Collect.Count MsgBox Collect.Item(i) Nextили
For Each Element In Collect MsgBox Element NextВ VB коллекции чаще всего встречаются при работе с объектами. Например для форм существует коллекция Controls, в которой перечислены все контролы, находящиеся на форме; при работе с базами данных существуют коллекции таблиц в базе данных и коллекции полей в таблицах.