Свойства и методы объектов
Объектная модель Microsoft Excel
Программирование в Excel строится на языке VBA и объектной модели Excel. Приложение Excel состоит из объектов, функциональные возможности которых можно использовать в программах, написанных на языке VBA. Для освоения способов управления Excel с помощью VBA необходимо ознакомиться с объектной моделью Excel.
Объектная модель описывает объекты приложения и связи между ними. В объектной модели Excel представлено более 100 объектов. В большинстве случаев используются не более 20 объектов. Для отображения всех объектов Excel нужно выполнить следующие действия.
1. Открыть новую рабочую книгу. Нажать комбинацию клавиш <Alt+F11>, чтобы открыть редактор Visual Basic.
2. На вкладке Введите вопрос ответов ввести текст: Microsoft Excel Objects.Нажать клавишу <Enter> и в списке тем щелкнуть на теме Microsoft Excel Object. Отобразится диаграмма объектной модели (рис. 1).
3. Щелкнуть на стрелке, направленной влево, над строкой Microsoft Excel Objects (стрелка окрасится в голубой цвет). Отобразятся объекты уровня рабочего листа (рис. 2).
Рис. 1. Объектная модель Excel
Рис. 2. Объектная модель Worksheet (Рабочий лист)
Каждый компонент в Microsoft Excel может быть представлен как объект VBA.
В VBA объектами являются рабочая книга, рабочий лист и его составляющие.
Примеры объектов:
Sheet - лист Excel;
Cell - ячейка;
Range - диапазон ячеек;
Chart – диаграмма;
Application - приложение;
UserForm - пользовательская форма.
Набор ячеек - Range
Диаграмма -
В программировании на VBA большей частью используются следующие объекты:
- Application (Приложение)
- WorkBook (Рабочая книга)
- Worksheet (Рабочий лист)
- Range (Диапазон)
- Chart (Диаграмма)
Поэтому объектную модель представим в сокращенном виде (рис. 3)
Рис. 3. Объектная модель Microsoft Excel
Объект Application представляет саму программу Excel.
Объект WorkBook представляет рабочую книгу Excel, т.е. файл Excel.
Объект Worksheet (Рабочий лист) - отдельная страница в рабочей книге, имеющая индивидуальное имя и предназначенная для хранения данных и выполнения вычислений.
Рабочий лист в свою очередь состоит из ячеек. Ячейки представляет объект Range, который может состоять из одной или нескольких ячеек.
Одним из часто используемых объектов является объект Chart (Диаграмма). Все, действия, которые можно выполнить с диаграммами в Excel, можно запрограммировать в VBA.
Объектная модель показывает иерархию объектов. На вершине объектной модели Excel находится объект Application. Под этим объектом расположены другие объекты, среди которых находится WorkBook. В терминологии объектно-ориентированного программирования такое подчинение одного объекта другому называется вложением, т.е. объект WorkBook вложен в объект Application, а объект Worksheet - в объект WorkBook.
Концепция вложения объектов широко используется при создании ссылок на объекты в коде VBA. Для полного определения объекта необходимо указать последовательно все уровни иерархии объектной модели. Например, чтобы сослаться на ячейку А1 на рабочем листе Лист1 рабочей книги Книга1, надо применить следующий код:
Application.Workbooks("Книга1").Worksheets("Лист1").Range("A1")
Но, если в программе нет ссылки на другое активное приложение, активной является Книга1 и активным листом является Лист1, то, достаточно написать
Range("A1")
Работа с объектами
Работа с любым объектом заключается в следующем:
• задание свойств объекта;
• получение значений свойств объекта;
• выполнение методов объекта.
Свойства и методы объектов
При работе с объектами используются такие термины, как свойства и методы объектов. Объект инкапсулирует (объединяет в себе) его свойства и методы, которые доступны из программы, составленной на VBA. Использование объекта сводится к использованию его свойств и методов.
Свойствами описываются характеристики объектов. Например, размер и цвет шрифта, положение формы на экране или состояние объекта (доступность, видимость). Чтобы изменить характеристику объекта, надо просто изменить значение свойства, т.е. присвоить ему определенные значения. Одни свойства доступны только для чтения, а другие доступны как для чтения, так и для записи (изменения).
Свойства
Задание значения свойству объекта имеет следующий формат:
• Объект.ИмяСвойства = Значение
Имя объекта отделяется от имени свойства точкой.
ект обозначает имя объекта, а ИмяСвойства - соответственно имя свойства, которому присваивается значение. Имя объекта отделяется от имени свойства точкой. Например, чтобы определить свойство Value (Значение) объекта Range , т.е. поместить в ячейку A1 значение 10, а в ячейку B1 значение Товар, применяются следующие инструкции 1.
Range("A1").Value = 10
Range("B1").Value = “Товар”
Чтобы получить значение свойства объекта, используется формат:
• ИмяПеременной = Объект.ИмяСвойства
Такой код применяется для присвоения переменной значения свойства объекта или свойству другого объекта. Если надо присвоить переменной значение свойства Value объекта Range, т.е. переменная принимает значение из ячейки рабочего листа, используются следующие инструкции.
Dim SngValue As Single
SngValue = Range("A1").Value
Для вывода на экран значения, содержащегося в ячейке B1, можно использовать одну из следующих инструкций:
MsgBox "Ячейка B1 содержит значение " & Range("B1").Value
или
MsgBox "Ячейка B1 содержит_ значение " & SngValue
Примеры свойств:
Range("D1").Value = 2005 - поместить в ячейку D1 значение 2005.
Range("C1:C10").Text = "Информатика" - поместить в диапазон ячеек C1:C10 текст Информатика.
Range("B2").Font.Size = 14 - в ячейке B2 установить размер шрифта 14.
Методы
Метод представляет собой действия, выполняемые объектом. Например, метод Clear (Очистить) объекта Range (Диапазон) удаляет содержимое ячеек диапазона. Методы могут принимать значения параметров, уточняющие характер действия, которое необходимо выполнить.
Для выполнения метода объекта применяется один из следующих форматов:
• ИмяОбъекта.ИмяМетода
• ИмяОбъекта.ИмяМетода Аргумент1, Аргумент2, …, АргументN
• ИмяОбъекта.ИмяМетода (Аргумент1, Аргумент2, …, АргументN)
Это означает, что:
• метод может не иметь Аргументов или все они не обязательные;
• метод может иметь несколько Аргументов, не заключаемых в круглые скобки;
• метод иметь несколько Аргументов, заключаемых в круглые скобки.
Кроме того, аргументы могут быть неименованными и именованными, обязательными и необязательными. Значения неименованных аргументов должны быть перечислены в заданном порядке, определяемом форматом метода, отделяя каждый аргумент запятой и включая запятые на месте пропущенного необязательного аргумента. Именованные аргументы имеют формат
НаименованиеАргумента := ЗначениеАргумента
Второй способ передачи значений параметров при вызове метода отличается от первого лишь отсутствием круглых скобок:
ИмяОбъекта.ИмяМетода аргумент!, аргумент2, ...
Примеры.
Application.Quit - закрыть приложение;
Application.Caption = "Протокол" - установить в качестве заголовка окна приложения “Протокол”.
Sheets("Меню").Select- выбрать лист “Меню”;
ActiveSheet.ShowDataForm- на активном в настоящий момент листе показать встроенную форму.
Sheets("Протокол").Range("В4:В10").Name = "Класс"–
диапазону В4:В10, расположенному на листе “Протокол”, присвоить имя “Класс”;
Sheets("Протокол").Range("В4:В10").Select
-выделить диапазон В4:В10 на листе “Протокол”.
Worksheets("Лист1").Range("A1:G37").Clear - удаляются формулы и форматирование ячеек A1:G37 на листе Лист1.
Charts("Диаграмма1").ChartArea.Clearочищается область диаграммы Диаграмма1 (объект ChartArea; удаляются данные и форматирование диаграммы);
Workbooks("Примеры").Open - выполнение метода Open (Открыть) рабочей книги Примеры;
Некоторые методы имеют аргументы, обязательные или необязательные. В следующем примере метод SaveAs (Сохранить), применяемый для сохранения текущей рабочей книги, в качестве аргумента использует имя файла, в котором будет сохранена рабочая книга.
ThisWorkbook.SaveAs Filename:= "Текущий бюджет"
Переменные объекты
Переменными-объектами называются переменные, имеющие тип Object.
Переменные-объекты объявляются точно так же, как переменные других типов, т.е. с помощью оператора Dim, используя при этом общий тип данных Object, или с помощью оператора Set, назначив переменным-объектам тип конкретного объекта.
После назначения переменным-объектам конкретных объектов имена переменных-объектов можно использовать в кодах процедур вместо имен самих объектов.
Примеры объявления переменных-объектов:
Dim Таблица1 As Object
Dim Продажи As Worksheet
Dim Книга1 As Workbook
Dim Курс As Range
Set Лист1 = Workbooks("Финансы"). _ Worksheets("Бюджет")
Set Лист2 = Workbooks("Финансы ")._ Worksheets("Бюджет")
Set Книга1 = Workbooks("Финансы")
Set Таблица1=Workbooks("Бюджет"). _ Worksheets(1).Range("A1:A12")
Пример использования в кодах процедур:
Sub Объектs()
Dim РабОбл As Range
Set РабОбл = Workbooks("Финансы "). _
Worksheets("Лист1").Range("A2:D2")
РабОбл.Font.Bold = True
РабОбл.Font.Italic = True
РабОбл.Font.Name = "Courier"
End Sub
В результате выполнения этой процедуры шрифт в ячейках рабочего листа Лист1 будет отформатирован как жирный(Bold) курсив(Italic) тип Courier. Например, слово “шрифт” будет иметь вид “шрифт”.
Коллекции (семейства)
Коллекцией называется группа подобных объектов. Рассмотрим следующее полное имя объекта:
Workbooks("Финансы").Worksheets("Лист1").Range("A2:D2")
Здесь Workbooks и Worksheets - это коллекции, Книra1 – это элемент коллекции Workbooks. Объект Range не является коллекцией.
Одно из определяющих свойств коллекции – возможность добавлять в нее новые элементы.
В объект Range нельзя добавить другие диапазоны ячеек, так как в Excel диапазоны жестко определены и ограничены еще во время их задания.
Основным свойством коллекции является свойство Count, а методом – Add.
В коллекции можно добавлять новые элементы. Для этого используется метод Add (Добавить). Например, новую рабочую книгу можно создать с помощью следующего кода:
Workbooks.Add
Этот код эквивалентен выполнению в Excel команды Файл | Создать. Чтобы добавить новый лист в рабочую книгу, используется код
Worksheets.Add
Свойство коллекции Count (Счет) хранит количество элементов, составляющих коллекцию.
Для определения количества листов в текущей рабочей книге можно использовать следующие инструкции:
Dim NumWS As Integer
NumWS = Worksheets._ Count
С помощью свойства Countможно проверить, сколько содержит рабочая книга рабочих листов. Код процедуры представлен ниже:
Sub NumWorkSheets ()
Dim NumWS As Byte
Dim Prompt As String
NumWS = Worksheets.Count
Prompt = "Книга содержит " & _ КолРЛ
Prompt = Сообщ & " листов "
MsgBox Prompt
End Sub