[an error occurred while processing this directive] | |
1-й час. Знакомство с Visual Basic for Applications 3-й час. Работа с элементами управления 4-й час. Переменные и константы 6-й час. Логика условных операторов 7-й час. Циклические вычисления 9-й час. Основные объекты Excel 11-й час. Редактор Visual Basic 15-й час. Автоматизация экранных форм 20-й час. Получение внешних данных |
8-й час. Введение в объектыМожете себя поздравить - вы находитесь на той стадии освоения языка VBA, когда можно смело утверждать, что фундамент для разработки приложений VBA уже построен. Вы умеете создавать и работать с переменными и константами, окнами сообщений и окнами ввода, условными операторами и операторами цикла. Этого вполне хватит для работы внутри Excel, но мало для работы с самой программой Excel. Для работы с программой Excel необходимы иные механизмы, и начиная с этого часа мы приступаем к их изучению. В этом часе будут рассмотрены следующие вопросы.
Что такое объектПрежде чем дать определение объектам, сделаем небольшое отступление. Язык VBA, как любой другой язык программирования, применяет определенные программные конструкции. И изучение языка программирования - это путь изучения средств, с помощью которых можно управлять поведением, выполняемыми действиями или просто появлением конструкций "чего-то". В лингвистике это "что-то" называется субъектом, а в языке VBA - объектом (object). Объекты - это то, чем можно управлять с помощью кода VBA. Вернемся в Excel. Вы, конечно, знаете, что собой представляют рабочая книга, рабочий лист, ячейка, диапазон ячеек, диаграмма. Если это так, то вы уже знакомы с некоторыми объектами Excel. Объекты, свойства и методыОбъекты управляются с помощью свойств и методов. Свойства (properties) - это совокупность характеристик и атрибутов, описывающих объект. Изменение значений свойств влияет на поведение и внешний вид объекта. С помощью свойств, например, можно задать цвет, значение, шрифт или формат диапазону ячеек. Методы (methods) - это те действия, которые может выполнять объект. Например, метод Clear (Очистить) объекта Range (Диапазон) удаляет содержимое ячеек диапазона. Возвращаясь к лингвистическим аналогиям, можно сказать, что объекты - это существительные, свойства - прилагательные, а методы - глаголы в предложениях языка VBA. Практически все в реальной жизни можно описать с помощью терминологии объектов, свойств и методов. Возьмите себя в качестве примера. Вы - объект под названием Человек. Ваши свойства включают такие "параметры": Имя, Рост, Вес, ЦветГлаз, ЦветВолос, Возраст и т.д. Некоторые "методы", которые вы можете выполнять: Спать, ПриниматьПищу, Бегать и Программировать. Конечно, не принимайте эту схему слишком серьезно, но, с другой стороны, этот пример наглядно показывает, как работает концепция объектов, свойств и методов. Объектная модель ExcelПервое, что вы должны сделать для освоения способов управления Excel с помощью VBA (или любого другого приложения, поддерживающего VBA) - ознакомиться с объектной моделью Excel. Объектная модель описывает объекты приложения и связи между ними. В объектной модели Excel представлено более 100 объектов (не паникуйте, нет никакой необходимости изучать их все). Скорее всего, в своей работе вы будете использовать не более 20 объектов, но, конечно, никто не запрещает вам использовать все 100. Чтобы увидеть все объекты Excel, выполните следующие действия.
Рис. 8.1. Объектная модель программы Excel
Рис 8.2. Вот сколько объектов составляют "простой" объект Worksheet (Рабочий лист)! На рис. 8.1 видно, что вершиной иерархии объектной модели Excel является объект Application (Приложение). С этим объектом мы уже встречались в 5-м часе при использовании метода InputBox. На следующем уровне иерархии объектной модели находится объект WorkBook (Рабочая книга), который совпадает с файлом рабочей книги Excel. Объект WorkBook содержит объекты более низкого уровня, в частности объект Worksheet (Рабочий лист). Объект Worksheet, в свою очередь, состоит из других объектов (рис. 8.2), среди которых выделим Range (Диапазон), с которым мы еще встретимся в этом часе. Надеюсь, вы поняли принцип построения объектной модели. Пять наиболее часто используемых объектовСреди более 100 объектов Excel в программировании на VBA чаше всего используются следующие:
Это не значит, что вы не будете работать с другими объектами Excel, но приведенные являются "рабочими лошадками" любого создаваемого приложения. Объект Application представляет саму программу Excel, позволяя использовать установки Excel уровня приложения, встроенные функции Excel, а также высокоуровневые методы, такие как InputBox. Объект WorkBook представляет рабочую книгу Excel, т.е. файл Excel. Но в VBA эти понятия не эквивалентны: вы не открываете файл Excel - вы открываете рабочую книгу Excel, вы не сохраняете файл рабочей книги - вы сохраняете саму рабочую книгу, и т.д. При изучении Excel вы в первую очередь знакомитесь с рабочими листами, из которых состоит рабочая книга. Объект Worksheet (Рабочий лист) - отдельная страница в рабочей книге, имеющая индивидуальное имя и предназначенная для хранения данных и выполнения вычислений. Рабочий лист в свою очередь состоит из ячеек. По логике, должен существовать объект Cell (Ячейка), но такого в Excel нет (есть свойство Cell, с которым мы познакомимся позднее). Ячейки представляет объект Range, который может состоять из одной или нескольких ячеек. Всем известны развитые средства Excel для построения диаграмм. Поэтому не удивительно, что одним из часто используемых объектов является объект Chart (Диаграмма). Все, что можно "сотворить" с диаграммами в Excel, можно повторить с помощью кода VBA. Все элементы управления, с которыми мы работали в 3-м часе, также являются объектами. В 15-м часе "Автоматизация экранных форм" мы снова встретимся с элементами управления как объектами Excel. Как понимать иерархию объектной моделиМы уже отмечали, что объектная модель Excel построена в виде иерархической диаграммы, на вершине которой находится объект Application. Под этим объектом расположены другие объекты, среди которых - WorkBook. В терминологии VBA такое подчинение одного объекта другому называется вложением, т.е. объект WorkBook вложен в объект Application, а объект Worksheet - в объект WorkBook. Такое вложение одного объекта в другой очень напоминает русскую матрешку. Ссылка на объекты в коде VBAКонцепция вложения объектов широко используется при создании ссылок на объекты в коде VBA. Для полного определения объекта необходимо создать "туннель" через все уровни иерархии объектной модели. Например, чтобы сослаться на ячейку А1 на рабочем листе Лист1 рабочей книги Книга1, надо применить следующий код:
В большинстве случаев объект Application можно не упоминать (на Application.InputBox это не распространяется). На ячейку А1 можно дать ссылку в следующем виде:
Полное описание объекта требуется не всегда. Например, в том случае, когда рабочий лист Лист1 является текущим, можно применить короткую ссылку на ячейку А1:
Практический опыт программирования подскажет вам, когда можно применять "усеченное" описание объектов. В любом случае необходимо следить за тем, чтобы не встречались различные объекты с одним и тем же описанием. Например, если есть две рабочие книги с одинаково названными рабочими листами, то для ссылок на эти рабочие листы необходимо применять полное описание, где присутствовало бы название рабочих книг. Работа с объектамиРабота с любым объектом заключается в следующем.
В следующих разделах мы подробно рассмотрим эти действия. Задание свойств объектаЗадание значения свойству объекта имеет следующий синтаксис:
Объект обозначает имя объекта, а имя_свойства - соответственно имя свойства, которому присваивается значение. Имя объекта отделяется от имени свойства точкой. Например, чтобы определить свойство Value (Значение) объекта Range (другими словами, чтобы поместить в ячейку значение), применяется следующий код:
Чтобы получить значение свойства объекта, используется код
Такой код применяется, например, для присвоения переменной значения свойства объекта или свойству другого объекта. Если надо присвоить переменной значение свойства Value объекта Range (т.е. переменная принимает значение из ячейки рабочего листа), используется следующий код:
Можно по-разному использовать значения свойств объекта. Следующая строчка кода создает окно сообщения, отображающее значение, содержащееся в ячейке рабочего листа:
Использование методовДля выполнения метода объекта применяется синтаксис
Например, для выполнения метода Open (Открыть) рабочей книги Примеры запишите код
Некоторые методы имеют аргументы, обязательные или необязательные. В следующем примере метод SaveAs (Сохранить), применяемый для сохранения текущей рабочей книги, в качестве аргумента использует имя файла, в котором будет сохранена рабочая книга.
Вы уже убедились, что синтаксис задания методов зависит от объекта, которому принадлежит метод. Так, некоторые методы имеют аргументы, а некоторые методы даже могут возвращать значения. Справочная информация о свойствах и методахСправочная система VBA предоставляет самую разнообразную информацию о свойствах и методах. Чтобы получить эти сведения, выполните следующие действия.
Рис. 8.3. Это диалоговое окно предлагает не слишком большой выбор
Рис. 8.4. Тема Worksheet Object не только описывает объект Worksheet, но и позволяет получить доступ к информации о свойствах и методах этого объекта
Рис. 8.5. Список всех свойств рабочего листа Начинающие программисты обычно знают, что они хотят сделать, но не знают как. Справочная система может помочь в таких ситуациях. Откройте окно справки с описанием интересующего объекта и сначала просмотрите список его свойств. Если не найдете нужного свойства, попытайтесь найти нужный метод. Переменные-объектыПри изучении типов данных мы только упомянули о типе Object. Переменные этого типа называются переменными-объектами. Поскольку эти переменные указывают на объект, они могут иметь свойства и методы, соответствующие этому объекту. Переменные-объекты объявляются точно так же, как переменные других типов, т.е. с помощью оператора Dim, при этом можно использовать родовой тип данных Object или применить тип конкретного объекта. В листинге 8.1 показано несколько примеров объявления переменных-объектов. Листинг 8.1. Объявление переменных-объектов
Первый оператор Dim использует родовой тип данных Object. Это наименее предпочтительный способ объявления переменных-объектов. Более предпочтительны способы объявления с указанием определенных объектов, как показано в последних трех строчках листинга 8.1. После объявления переменных-объектов с помощью оператора Set им назначаются конкретные объекты. В листинге 8.2 показаны примеры использования оператора Set. Листинг 8.2. Примеры оператора Set
После назначения переменным-объектам конкретных объектов имена переменных-объектов можно использовать в кодах процедур вместо имен самих объектов. Пример такого использования показан в листинге 8.3. Листинг 8.3. Использование переменной-объекта
В этом листинге имя переменной WorkingRange применяется вместо ссылки на диапазон A1:D1, который находится на рабочем листе Лист1 рабочей книги Час8. Такая замена освобождает от необходимости частого написания длинного полного имени объекта. Далее в этой книге вы найдете другие способы использования переменных-объектов. При написании кода процедур я придерживаюсь следующего правила: если длинное полное имя объекта используется более двух раз, то его лучше заменить именем переменной-объекта. КоллекцииРассмотрим следующее полное имя объекта:
Обратите внимание на слова Workbooks и Worksheets - это коллекции. Коллекцией называется группа подобных объектов. В нашем примере Книra1 - это элемент коллекции Workbooks. Объект Range не является коллекцией. Одно из определяющих свойств коллекции - возможность добавлять в нее новые элементы. В объект Range вы не сможете добавить другие диапазоны ячеек, так как в Excel диапазоны жестко определены и ограничены еще во время их задания. Чтобы увидеть список доступных коллекций Excel, выполните следующие действия.
Диаграмма объектной модели - отличное средство для ознакомления с коллекциями Excel. После просмотра объектной модели закройте окно справочной системы. Метод AddКак указывалось выше, одним из определяющих и полезных свойств коллекции является возможность добавления новых элементов коллекции. Под добавлением понимается создание нового элемента. Для этого используется метод Add (Добавить). Например, новую рабочую книгу можно создать с помощью следующего кода:
Этот код эквивалентен выполнению в Excel команды Файл > Создать. Чтобы добавить новый лист в рабочую книгу, используется код
Свойство CountКоллекции имеют полезное свойство, которое называется Count (Счет). Это свойство хранит количество элементов, составляющих коллекцию. Если вы хотите узнать, сколько листов в текущей рабочей книге, примените код
Можно найти много применений свойству Count. Предположим, вы создаете приложение, где рабочая книга должна содержать отдельный лист на каждый рабочий день недели. С помощью свойства Count можно проверить, содержит ли рабочая книга ровно пять рабочих листов. Код процедуры представлен в листинге 8.4. Листинг 8.4. Применение свойства Count
РезюмеВ этом часе мы рассмотрели важные понятия VBA; объекты, свойства и методы. Вы узнали, как использовать методы и свойства для управления поведением и внешним видом объектов. В последующих часах вы изучите новые объекты и их свойства и методы. Вопросы и ответыВопрос. Что определяет объекты Excel? Ответ. Все объекты имеют свойства и методы. Свойства управляют атрибутами, внешним видом и поведением объектов. Методы - это действия, которые может выполнять объект. Вопрос. Почему объектная модель Excel имеет иерархическую структуру? Ответ. Это отражение концепции вложения объектов. Многие объекты имеют вложенные объекты и сами являются подмножеством других объектов более высокого уровня. Отсюда вытекает иерархическая структура объектной модели Excel. ПрактикумС помощью тестов и упражнений вы проверите, насколько хорошо усвоили изложенный материал. Ответы на вопросы смотрите в Приложении. Тесты
УпражнениеИспользуя окно просмотра объектов Object Browser или справочную систему Visual Basic, найдите следующие свойства. Для объекта Application:
Для объекта Workbook:
Используйте эту информацию для создания процедуры. В текущую рабочую книгу вставьте новый модуль. Создайте новую процедуру с именем СкажиМне. Эта процедура должна использовать найденные вами свойства для вывода последовательности окон сообщений со значениями этих свойств. Совет. Объект Application имеет свойство ThisWorkbook (Текущая рабочая книга), которое содержит имя текущей рабочей книги. Используйте эту информацию для определения места сохранения рабочей книги. |
[an error occurred while processing this directive] |