КАТЕГОРИИ: Архитектура-(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). Не забывайте при этом указать место, так как по умолчанию элементы добавляются в конец коллекции. Если элемент коллекции – объект, то, очевидно, что нельзя изменить объект, то есть ссылку на него, но можно изменить любое его свойство (значение).
Рисунок 7 – Коллекция и объектная переменная
На рисунке 7 показана коллекция cl, содержащая два элемента cl(1), cl(2). Первый элемент коллекции содержит объект (точнее – ссылку на него) ob1. Второй элемент коллекции содержит ссылку на объект ob2. Связь между первым элементом коллекции и вторым условно показана стрелкой, хотя программисту не дается возможность работать с этой ссылкой. Кроме того, показана реализация ссылки, число в скобках – адрес следующего элемента коллекции, а звездочка – признак конца. В программе описана еще и объектная переменная obj, которая указывает на объект ob2. Таким образом, к объекту obj1 можно добраться только как к элементу коллекции, а к объекту obj2 – и как к элементу коллекции и через переменную. Номера вверху – это условные номера ячеек оперативной памяти.
Дата добавления: 2014-01-04; Просмотров: 331; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |