Содержание 1 введение 6

Вид материалаРеферат
Использование событий объекта Application
Public WithEvents оАрр As Application
Dim X As New EventClassModule
Private Sub object_NewWorkbook(ByVal Wb As Workbook)
Private Sub object_WorkbookActivate(ByVal Wb As Workbook)
Private Sub oApp_WorkbookActivate(ByVal Wb As Workbook)
Private Sub object_WorkbookAddinInstall(ByVal Wb As Workbook)
Private Sub object_WorkbookAddinUninstall(ByVal Wb As Workbook)
Событие WorkbookBeforeClose.
Private Sub object_WorkbookBeforeClose(ByVal Wb As Workbook, _
Private Sub oApp_WorkbookBeforeClose(ByVal Wb As Workbook, _
Private Sub object_WorkbookBeforePrint(ByVal Wb As Workbook, _
Событие WorkbookBeforeSave.
Private Sub object_WorkbookBeforeSave(ByVal Wb As Workbook, _
Private Sub object_WorkbookDeactivate(ByVal Wb As Workbook)
Private Sub object_WorkbookNewSheet(ByVal Wb As Workbook, _
Private Sub object_WorkbookNewSheet(ByVal Wb As Workbook, _
Private Sub object_WorkbookOpen(ByVal Wb As Workbook)
Подобный материал:
1   ...   15   16   17   18   19   20   21   22   ...   25


Использование событий объекта Application


Объекты VBA, включая элемент Application, имеют множество событий. Чтобы обработать событие с помощью объекта Application, необходимо создать новый модуль класса и объявить в нем переменную, используя ключевое слово WithEvents:

Public WithEvents оАрр As Application

Ключевое слово WithEvents определяет, что переменная оАрр используется для обработки события объекта. Данное ключевое слово допускается только в модулях класса и описывает только переменные уровня модуля.

Теперь требуется связать описанный в модуле класса объект с элементом Application. Это можно сделать в любом модуле, указав следующий код:

'Инструкция Dim располагается в разделе описаний модуля.

'Имя EventClassModule – имя модуля класса.

Dim X As New EventClassModule

Sub InitializeAppEvents()

Set X.oApp = Application

End Sub


После выполнения процедуры InitializeAppEvents объект оАрр в модуле класса указывает на объект Excel Application, что позволяет использовать процедуры обработки в модуле класса при возникновении событий. Если необходимо включить или отключить обработку событий, в программе следует изменить значение свойства Application.EnableEvents. Если данное свойство имеет значение True, то процедуры обработки доступны.

Ниже описываются некоторые события объекта Application. Следует отметить, что именем объекта для события objесt_ИмяСобытия (например, object_NewWorkbook) является имя переменной, которая описана с помощью ключевого слова withEvents.


Событие NewWorkbook. Событие NewWorkbook возникает при создании новой рабочей книги. Процедура обработки события имеет следующий синтаксис:

Private Sub object_NewWorkbook(ByVal Wb As Workbook)

Параметр Wb – ссылка на рабочую книгу, создание которой вызвало событие.

Событие WorkbookActivate. Событие WorkbookActivate возникает при активизации любой рабочей книги. Процедура обработки события имеет следующий синтаксис:

Private Sub object_WorkbookActivate(ByVal Wb As Workbook)


Параметр Wb – ссылка на рабочую книгу, активизация которой вызвало событие. Например, если требуется вручную произвести вычисления для всех открытых рабочих книг, то при активизации книги можно использовать следующую процедуру:

Private Sub oApp_WorkbookActivate(ByVal Wb As Workbook)

Application.Calculate

End Sub


Событие WorkbookAddinInstall. Событие WorkbookAddinln-stall возникает при установке рабочей книги в качестве дополнительной надстройки. Данное событие можно использовать в процедуре, которая действует как программа установки для других рабочих книг. Синтаксис процедуры обработки следующий:

Private Sub object_WorkbookAddinInstall(ByVal Wb As Workbook)


Параметр Wb является ссылкой на устанавливаемую рабочую книгу.

Событие WorkbookAddinUninstall. Событие Workbook-AddinUninstall возникает при отмене установки рабочей книги в качестве дополнительной надстройки. Синтаксис процедуры обработки следующий:

Private Sub object_WorkbookAddinUninstall(ByVal Wb As Workbook)


Параметр Wb является ссылкой на рабочую книгу, установку которой в качестве надстройки требуется отменить.

Событие WorkbookBeforeClose. Событие WorkbookBefore-Close возникает непосредственно перед закрытием открытой рабочей книги. Синтаксис процедуры обработки следующий:

Private Sub object_WorkbookBeforeClose(ByVal Wb As Workbook, _

ByVal Cancel As Boolean)

Параметр Wb – ссылка на рабочую книгу, которую требуется закрыть. Параметр Cancel имеет значение False при возникновении события. Если процедура обработки события присваивает значение True данному параметру, то рабочая книга не закрывается по завершении выполнения процедуры. Данное событие используется, например, для выполнения метода Calculat или для исполнения подпрограммы проверки условий на значение:

Private Sub oApp_WorkbookBeforeClose(ByVal Wb As Workbook, _

Application.Calculate)

'Вызов внешней подпрограммы проверки условий на значение

ValidateEntries

End Sub

Событие WorkbookBeforePrint. Событие WorkbookBefore-Print возникает непосредственно перед печатью открытой рабочей книги. Синтаксис процедуры обработки следующий:

Private Sub object_WorkbookBeforePrint(ByVal Wb As Workbook, _

ByVal Cancel As Boolean)

Параметр Wb – ссылка на рабочую книгу, которую требуется напечатать. Параметр Cancel имеет значение False при возникновении события. Если требуется отменить печать документа, присвойте данному параметру в процедуре обработки значение True.

Событие WorkbookBeforeSave. Событие WorkbookBefore-Save возникает непосредственно перед сохранением открытой рабочей книги. Синтаксис процедуры обработки следующий:

Private Sub object_WorkbookBeforeSave(ByVal Wb As Workbook, _

ByVal SaveAsUi As Boolean, ByVal Cancel As Boolean)

Параметр Wb – ссылка на сохраняемую рабочую книгу. Если требуется отобразить диалоговое окно Сохранение документа (Save As), присвойте параметру SaveAsUi значение True. Параметр Cancel имеет значение False при возникновении события. Если требуется отменить сохранение документа, присвойте данному параметру в процедуре обработки значение True.

Событие WorkbookDeactiVate. Событие Workbook-Deactivate возникает, когда открытая рабочая книга теряет фокус. Синтаксис процедуры обработки следующий:

Private Sub object_WorkbookDeactivate(ByVal Wb As Workbook)

Параметр Wb – ссылка на рабочую книгу, которая теряет фокус.

Событие WorkbookNewSheet. Событие WorkbookNew-Sheet возникает при добавлении нового листа в открытую рабочую книгу. Синтаксис процедуры обработки следующий:

Private Sub object_WorkbookNewSheet(ByVal Wb As Workbook, _

ByVal Sh As Object)

Параметр Wb – ссылка на рабочую книгу, в которую добавлен лист. Аргумент Sh – вновь созданный лист.

Данное событие можно использовать, чтобы удалить вновь созданный рабочий лист, если количество листов в рабочей книге больше заданного:

Private Sub object_WorkbookNewSheet(ByVal Wb As Workbook, _

Sh As Object)

If Wb.Worksheets.Count > 6 Then

MsgBox "Максимальное число листов в рабочей книге равно 5."

Wb.Sh. Delete

End If

End Sub

Событие WorkbookOpen. Событие WorkbookOpen возникает при открытии рабочей книги. Синтаксис процедуры обработки следующий:

Private Sub object_WorkbookOpen(ByVal Wb As Workbook)

Параметр Wb – ссылка на открываемую рабочую книгу.