
- •Лабораторная работа № 10 Объекты и коллекции
- •Использование свойств объектов
- •Использование методов объекта
- •Объектные переменные
- •Ссылка на объекты с помощью With...End With
- •Dim fName As String 'имя файла-копии
- •Работа с коллекциями объектов и контейнерами объектов
- •Задание 1
- •Задание 2
- •Обработчики событий
- •Задание 3
Задание 1
Написать макрос, который открывает книгу “Сотрудники”, создает новую книгу “Копия” и копирует из книги “Сотрудники” лист “Штат” после первого листа книги “Копия”.
Предполагается, что книга “Сотрудники” находится в той же папке, что и файл с книгой, содержащей макрос.
Задание 2
Переставить листы в обратном порядке.
Обработчики событий
Событие— это действие, распознаваемое объектом, для которого можно запрограммировать отклик.
Например, в качестве события можно использовать открытие или закрытие документа, щелчок мыши, нажатие клавиши.
Набор действий или повторяющихся явлений, которые можно сопоставить с кодом VBA, называется событиями, а специальный тип процедуры, которая выполняется при возникновении события, называетсяобработчиком событий.
Обработать можно события следующих обьектов Excel:
Application
WorkBook
WorkSheet
Chart
Обработчики событий дают возможность привязать свой код к действиям пользователя, например к открытию или закрытию книги, активации таблицы, сохранению документа ... Обработчики событий создаются с модулях лисов или книги (в зависимости от того, с каким объектом будет связано это событие. Чтобы создать процедуру обработки события, откройте редактор Visual Basic (Alt + F11), выберите например Лист1 и из двух раскрывающихся списков сверху выберите объект и событие. Редактор автоматически создаст процедуру для обработки события. Вам остается только написать в ней свой код (см. рисунок).
Однако в некоторых ситуациях события для объектов не появляются в окне редактора кода (например, это справедливо для очень важного объекта Application). В этом случае необходимо явно объявить этот объект с событиями — при помощи ключевого слова WithEvents, например так:
Public WithEvents App As Word.Application
Делается это в области объявлений модуля (Declarations). После этого в редакторе кода Visual Basic появляется новый объект App со всеми необходимыми событиями.
Многие события имеют параметры. Это выглядит вот так: Private Sub Worksheet_BeforeRightClick(ByVal Target As Excel.Range, Cancel As Boolean) ...... End Sub
Здесь Target - диапазон ячеек, подвергшийся процедуре правого клика, Cancel - параметр, позволяющий отменить событие, если установить его в True.
События объекта Application
Событие |
Описание |
NewWorkbook |
При создании новой рабочей книги |
WorkbookActivate |
При активизации рабочей книги |
WorkbookBeforeClose |
Перед закрытием рабочей книги |
WorkbookBeforeSave |
Перед сохранением рабочей книги |
WorkbookDeactivate |
Когда активная книга теряет фокус |
WorkbookNewSheet |
При добавлении нового листа в рабочую книгу |
WorkbookOpen |
При открытии рабочей книги |
События объекта Workbook
Событие |
Описание |
BeforeClose |
При закрытии рабочей книги |
BeforeSave |
Перед сохранением рабочей книги |
Deactivate |
Когда рабочая книга теряет фокус |
NewSheet |
При добавлении нового листа |
Open |
При открытии рабочей книги |
SheetActivate |
При активизации любого рабочего листа |
SheetDeactivate |
Когда рабочий лист теряет фокус |
События объекта Worksheet
Событие |
Описание |
BeforeClose |
При закрытии рабочей книги |
BeforePrint |
Перед печатью рабочей книги |
BeforeSave |
Перед сохранением рабочей книги |
Deactivate |
Когда рабочая книга теряет фокус |
NewSheet |
При добавлении нового листа |
Open |
При открытии рабочей книги |
SheetActivate |
При активизации любого рабочего листа |
Sheet Deactivate |
Когда рабочий лист теряет фокус |