Работа с переменными
IsDate (переменная)
IsNumeric(переменная)
IsObject(переменная)
IsArray(переменная)
IsNull(переменная)
IsEmpty(переменная)
Функции
True, если переменная имеет соответствующий тип или содержит значение соответствующего типа; иначе False
Len (переменная)
Функция
Число байтов, необходимое для хранения информации, помещенной в переменную
TypeName (переменная)
Функция
Строка, представляющая тип переменной
VarType (переменная)
Функция
Целое число, представляющее подчиненный тип переменной
Глава 12. Объектно-ориентированное программирование.
В этой главе ...
~ Концептуализация объектов
~ Понимание свойств, методов и событий - главных компонентов VBA-объектов
~ Работа с объектными моделями
~ Использование форм как объектов
~ Выяснение и установка свойств объектов
~ Вызов методов
~ Использование ссылок на объект для идентификации объекта, с которым нужно работать
~ Присваивание переменным ссылок на объект
~ Создание своих собственных объектов с помощью модулей классов
~ Эффективное использование объектов с помощью операторов For Each ... Next и With
Главным преимуществом VBA является статус объектно-ориентированного средства разработки приложений. Понимание объектов лежит в основе программирования в VBA, особенно когда дело касается создания пользовательских диалоговых окон и использования возможностей ведущего VBA-приложения. В этой главе мы сначала очертим объектное поле на уровне понятий, а затем займемся приемами программирования с использованием объектов. Объекты стали неотъемлемыми элементами ландшафта VBA.
Именно через объекты вы получаете доступ к функциональным возможностям того VBA приложения, в котором работаете. Точно так же вы можете получить доступ к объектам других VBA-приложений и даже создать свои собственные объекты.
Что такое объект
Можно, конечно, привести формальное определение объекта в VBA, но, я думаю, проще объяснить понятие объекта с помощью нескольких неформальных примеров, используя их функциональные возможности.
Объекты как компоненты VBA-приложений
Начать изучение объектов лучше всего с рассмотрения их как частей VBA приложения и его документов. Любой элемент графики (shape) в Visio является объектом, равно как и любая связь (connect), установленная между двумя такими элементами графики (рис. 12.1). Точно так же объектами являются и слои, на которых размещаются элементы графики, и страницы, на которых располагаются слои. Объектом будет и сам документ, содержащий все эти страницы, слои, элементы графики и связи.
Рис. 12. l Примеры объектов VBA
Подобным образом к объектам Excel относятся ячейки, в которых размещаются данные и формулы, именованные диапазоны ячеек, диаграммы, украшающие многие документы, отдельные рабочие листы и целые рабочие книги. И во всех приложениях Microsoft Office - как и во многих других VBA-приложениях- меню и панели инструментов, а также пункты этих меню и кнопки в этих панелях инструментов тоже являются объектами.
Объекты VBA существуют в иерархии, в которой объекты одних типов содержатся в объектах других типов. Подобные иерархии объектов рассматриваются ниже, в разделе
"Что такое объектная модель", а пока что мы сконцентрируем внимание на обсуждении понятия индивидуального объекта.
Объекты на уровне понятий
Если вам трудно ассоциировать объекты с графическими элементами, ячейками рабочего листа или кнопками панели инструментов, представляйте себе объекты как материальные предметы. Вы же можете представить, как вырезаете ножницами из листа бумаги кружочек и наклеиваете его на другой лист бумаги. А в ячейку рабочего листа вы можете впечатать числа, на кнопке можете щелкнуть.
Правда, кроме таких конкретных объектов, VBA-приложения предлагают и более абстрактные.
* в Microsoft Excel объект CustomView задает пользовательское представление рабочей книги (в Excel пользовательское представление определяет внешний вил рабочей книги на экране и ее параметры печати).
* В Microsoft Word объект File Search представляет, как сказано в соответствующем разделе справки, "функциональные возможности диалогового окна Открытие документа (меню Файл)". Обратите внимание, этот объект представляет не само диалоговое окно, а его функциональные возможности.
* В Visio объект Style представляет атрибуты линий, текста и заливки для графических элементов.
* В VBA имеется несколько объектов, доступных для всех VBA-приложениЙ. Так, например, объект Collection представляет контейнер для переменных или других объектов, с которыми, независимо от типов этих объектов, предполагается работать как с единым целым.
Практическое определение объекта
Вы можете заметить, что порой представить объект VBA в материально осязаемом виде не так-то просто. Но это и к лучшему - чем дальше вы уходите от материализации объектов, тем свободнее будете себя чувствовать при работе со всем диапазоном доступных объектов.
Используемое программистами-практиками определение объекта оказывается совсем простым: объектом называется любая именованная сущность, имеющая
* свойства, т.е. установки, которые можно проверить и изменить;
* методы, т.е. действия, которые может выполнить объект, когда программа попросит об этом;
* события, т.е. ситуации, в которых объект оказывается и на которые может ответить заранее определенными для таких ситуаций действиями.
Если вам не чуждо чувство прекрасного, вы можете заметить, что для таких щедро одаренных созданий термин объект не очень-то подходит, поскольку эти объекты больше похожи на братьев наших меньших, чем на инертные лампы. У тигров и китов есть отличительные особенности глаз, конечностей и хвостов, а у объектов - свойства. Лошади и собаки умеют по команде выполнять разные трюки или убегать от опасности, а объекты имеют методы и события.
Вы все еще хотите услышать формальное определение? Вот оно: объектом в программе называется именованная единица, объединяющая в себе данные и программный код, использующий эти данные и воздействующий на них. В таком случае говорят, что объект инкапсулирует данные и связанный с ними программный код.
Классы объектов и конкретные объекты
Есть одно формальное обстоятельство, которое следует запомнить. Существует различие между конкретными объектами и теми образцами, на основе которых данные объекты создаются. Конкретный объект представляет отдельный документ, графический элемент, ячейку рабочего листа или нечто другое. Например, документ, как объект, представляет текст этого отдельного документа.
В противоположность конкретному объекту, класс объекта можно сравнить со строительным проектом. По одному проекту можно построить множество домов, в которых будут жить люди, но в самом проекте никто не живет. Точно так же в классе планируются типы данных, которые могут использоваться объектом, и определяются методы, свойства и события объекта. На основе этого плана вы создаете экземпляр данного класса - тот объект, который будет содержать реальные данные. На основе одного класса можно создать столько объектов, сколько вы пожелаете, чтобы использовать каждый из них для различных целей и с различными данными.
Коллекции объектов
Коллекция- это VBA-объект специального назначения. Как видно из самого названия, коллекции предназначены для упрощения работы с набором объектов, когда этот набор объектов нужно использовать как одно целое. Как правило, все объекты в коллекции имеют один и тот же тип. Например, коллекция Shapes в Visio состоит из объектов Shape, а коллекция Pages - из объектов Page.