Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Коллекция

В VBA есть интересный объект – коллекция (Collection). Он представляет собой упорядоченное множество элементов. К элементам коллекции можно обратиться, используя метод Item, параметром которого следует указать имя элемента или его номер. Элементами коллекции могут быть переменные базовых типов, объекты или определяемые пользователем типы. В одну коллекцию можно помещать элементы разных типов.

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

В программе разрешается опускать.Item. Удобный способ перебрать элементы коллекции – воспользоваться циклом FOR EACH (ниже см. пример).

Учитывайте, что при помещении в коллекцию значения объектной переменной, Вы заносите ссылку на область памяти, занятую объектом. А при включении в коллекцию переменной базового типа, Вы заносите значение переменной. Поэтому дальнейшие изменения объекта отразятся и на элементе коллекции. А изменения не объектной переменной никак не отразятся на элементе коллекции.

Sub test1()

Dim cl As New Collection

x1 = 12

yy = "eeeeeeeee"

cl.Add x1

cl.Add yy

For Each c In cl

MsgBox c

Next

yy = "qqqq"

For Each c In cl

MsgBox c

Next

Еще важное замечание: невозможно изменить элемент коллекции, его можно только удалить (Remove) и включить новый (Add). Не забывайте при этом указать место, так как по умолчанию элементы добавляются в конец коллекции. Если элемент коллекции – объект, то, очевидно, что нельзя изменить объект, то есть ссылку на него, но можно изменить любое его свойство (значение).

 
 

 


                   
8   24 (16) aaa (*)   Мама мыла раму  
cl   cl(1) ob2 cl(2)   ob1     obj

 

 

Рисунок 7 – Коллекция и объектная переменная

 

На рисунке 7 показана коллекция cl, содержащая два элемента cl(1), cl(2). Первый элемент коллекции содержит объект (точнее – ссылку на него) ob1. Второй элемент коллекции содержит ссылку на объект ob2. Связь между первым элементом коллекции и вторым условно показана стрелкой, хотя программисту не дается возможность работать с этой ссылкой. Кроме того, показана реализация ссылки, число в скобках – адрес следующего элемента коллекции, а звездочка – признак конца. В программе описана еще и объектная переменная obj, которая указывает на объект ob2. Таким образом, к объекту obj1 можно добраться только как к элементу коллекции, а к объекту obj2 – и как к элементу коллекции и через переменную. Номера вверху – это условные номера ячеек оперативной памяти.

<== предыдущая лекция | следующая лекция ==>
Расширение объектной модели | Раннее и позднее связывание
Поделиться с друзьями:


Дата добавления: 2014-01-04; Просмотров: 311; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.01 сек.