- •Лекция 5. Объектная модель vba
- •Разработка приложений
- •Этапы разработки приложения
- •Определение потребностей пользователя
- •Проектирование приложения
- •Разработка интерфейса
- •Разработка приложения
- •Тестирование и отладка
- •Разработка документации и справочной системы
- •Установка приложения
- •Обновление приложения
- •Объектно-ориентированное программирование
- •Свойства, методы и события
- •Иерархия коллекций и объектов
- •Некоторые полезные свойства объекта Application
- •Работа с объектами Range
- •Задание диапазона
- •Свойства объекта Range
- •Методы объекта Range
- •Примеры работы с объектом Range
- •Параметры свойств и методов в языке vba
Иерархия коллекций и объектов
В приложении MicrosoftExcelможно открыть несколько рабочих книг. Каждая рабочая книга содержит несколько листов. Для представления подобных наборов одинаковых объектов используются так называемыеколлекции. При этом каждая коллекция – это тоже объект, который имеет свойства и методы.
Методы коллекции Workbooks, хранящей все открытые рабочие книги, позволяет открывать и закрывать рабочие книги, создавать новую рабочую книгу. Методы других коллекций обычно позволяют добавлять новый объект в коллекцию, удалять объект из коллекции, перемещать и копировать объекты коллекции, выделять объекты коллекции.
Свойства коллекций обычно содержат свойство Count, определяющее количество объектов в коллекции, и свойствоItem, позволяющее выделить один объект из коллекции по номеру или по имени.
Рабочую книгу невозможно открыть, не запустив приложение MicrosoftExcel. Рабочие листы не существуют без рабочей книги. Ячейки не существуют без рабочего листа. Таким образом, объекты и коллекции приложенияMicrosoftExcelобразуютиерархию.
Application
Workbooks
Workbook
Charts
Chart
Axes
Hyperlinks
Shapes
Names
Sheets
Styles
Windows
Worksheets
Worksheet
ChartObject
Cells
Comments
Hyperlinks
Names
Shapes
Charts
Dialogs
Names
RecentFiles
Sheets
Windows
Worksheets
Application
AddIns
Charts
Axes
Hyperlinks
Shapes
Dialogs
Names
RecentFiles
Sheets
Windows
Panes
SelectedSheets
Workbooks
Charts
Names
Sheets
Styles
Windows
Worksheets
Worksheets
ChartObjects
Scenarios
Comments
Hyperlinks
Names
Shapes
В объектно-ориентированном программировании для обращения к свойствам и методам объектов необходимо записать сначала имя объекта, затем через точку – имя свойства или метода.
Application.Undo
Application.Wait"12:00:00"
Application.WaitNow+TimeValue("0:00:10")
Если свойство представляет собой другой объект, то после него можно также поставить точку и записать имя свойства или метода этого объекта.
Application.Workbooks.Item(1).Close
Application.Workbooks.Item("Книга1.xlsm").Worksheets.Item("Лист2").Activate
Application.Workbooks.Item("Книга1.xlsm").Worksheets.Item("Лист2").Cells(1, 1).Value = 7
Свойство Itemявляется так называемымсвойством по умолчанию, поэтому его имя вместе с предшествующей точкой можно опустить и записать сразу параметр этого свойства. Кроме того, объектApplicationуникален, поэтому его имя также обычно можно опустить. Таким образом, предыдущие операторы можно сократить.
Workbooks(1).Close
Workbooks("Книга1.xlsm").Worksheets("Лист2").Activate
Workbooks("Книга1.xlsm").Worksheets("Лист2").Cells(1, 1).Value = 7
Некоторые полезные свойства объекта Application
При работе в приложении MicrosoftExcelактивной одновременно может быть только одна рабочая книга. В рабочей книге активен только один лист. На рабочем листе активна только одна ячейка, даже если выделен диапазон ячеек. VBA это известно, поэтому можно ссылаться на активные объекты более простым способом.
Свойство |
Возвращаемый объект |
ActiveWindow |
Активное окно |
ActiveWorkbook |
Активная рабочая книга |
ActiveSheet |
Активный лист (рабочий лист или лист диаграммы) |
ActiveChart |
Активный лист диаграммы или объект диаграммы, если такого листа или диаграммы нет, то свойство равно Nothing |
ActiveCell |
Активная ячейка |
Selection |
Выделенный объект – Range, ChartObject, Shape и т.д. |
ThisWorkbook |
Рабочая книга, содержащая выполняемую процедуру VBA |
Преимущества использования этих свойств объекта Applicationсостоят в том, что можно выполнить некоторые действия не над одним конкретным объектом, а над любым объектом, предварительно выделенным пользователем.
ActiveCell.Value= 1'Записываем в активную ячейку значение 1
ActiveCell.ClearContents'Очищаем активную ячейку
MsgBoxActiveSheet.Name'Выводим имя активного листа
Selection.Value= -5'Заполняем все ячейки выделенного диапазона числом -5