2.4.События объектов Excel
2.4.2. События WorkBooks

События для объекта Workbook происходят с определенной рабочей книгой. Эти события по умолчанию активированы, но как было сказано, их можно отключить, установив свойство Enable Events на False.

 

Чтобы создать новую процедуру события Workbook, следуйте приведенным ниже инструкциям.

1. Дважды щелкните на объекте ЭтаКнига, чтобы активировать его.

2. Щелкните на списке объектов Object и выберите пункт Workbook.

3. Щелкните на списке процедур Procedure и выберите нужное событие.
 
 
 
После создания новой процедуры события вы увидите, что к окну кода были добавлены строки
Private Sub Workbook_Event 
...
End Sub.

 

1. Событие Open
 
Событие Open — это одно из самых часто применяемых событий - Оно запускается каждый раз, когда открывается рабочая книга или надстройка. Событие Workbook Open может выполнять целый ряд задач — например, создавать лог-файл с информацией, кто и когда открывал рабочую книгу. Вы можете создать пользовательскую форму, которая открывается с помощью этого события. Пользовательская форма требует, чтобы пользователь, прежде чем получить доступ к файлу, выбрал свое имя из списка и ввел пароль. После того как имя и пароль пользователя проверены, имя пользователя помешается в лог-файл с печатью времени/даты. Для события Open возможны и некоторые дополнительные практические применения:
- активация определенного рабочего листа или ячейки;
- установка состояния окна рабочей книги (нормальное, свернутое или максимальное);
- открытие дополнительных рабочих книг.

 

Пример. Окно приложения Excel имеет максимальный размер и показывает пользователю текущую дату:

 
Private Sub Workbook_Open()
Application.WindowState = xlMaximized
MsgBox "Сегодня: " & Date
End Sub
 
 

ПРИМЕЧАНИЕ - Если при запуске Excel или при открытии рабочей книги вы будете удерживать нажатой клавишу Shift, то не дадите процедуре Workbook Open запуститься.

  

2. Событие Activate
 

Событие Activate запускается, когда активизируется рабочая книга, — например, при ее первоначальном открывании, при переходе в окно Excel из другой программы или при переключении между двумя рабочими книгами.

 

Пример. При работе в файле, окно имеет максимальный размер.

 
Private Sub Workbook_Activate()
Application.WindowState = xlMaximized
End Sub

3. Событие SheetActivate
 

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

или диаграмма. Важно проверить, какой тип листа активирован. Выражение If.. Then... Else может использоваться для определения, какой код будет выполняться для данного типа листа.

 

Пример. Проверка типа листа и активизация ячейки А1:

Private Sub Workbook_SheetActivate(ByVal Sh As Object)
If TypeName(Sh) = "Worksheet" Then Range("A1").Select
End If
End Sub


4 .Событие NewSheet

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

Private Sub Workbook__NewSheet(ByVal Sh As Object)
Sh.Move After:=Sheets(Sheets.Count)
End Sub
 

 

Процедура события NewSheet часто используется, чтобы помочь пользователям автоматизировать работу.

 

Пример. Бухгалтер компании Gaiden Supply просит своего помощника указать, когда были добавлены новые рабочие листы в файл Income Statement.xls. Они решают ввести дату создания рабочего листа в ячейку А1. Чтобы добавить дату создания к новым рабочим листам, создается следующая процедура NewSheet:
 
Private Sub Workbook_NewSheet(ByVal Sh As Object)
If TypeName(Sh) = "Worksheet" Then
Range("A1") = "Рабочий лист создан" & Now()
End If
End Sub
 


5. Событие BeforeSave

 

Процедура события BeforeSave выполняется перед сохранением рабочей книги. Она использует два аргумента - SaveAsUI и Cancel. Аргумент SaveAsUI указывает, нужно ли показывать окно диалога Save As (Сохранить как), а аргумент Cancel может использоваться для отмены операции сохранения.

 

Пример. Просьба пользователя перед сохранением рабочей книги подтвердить, что они хотят сохранить сделанные изменения:

 

Когда пользователь сохраняет рабочую книгу, выполняется процедура Workbook BeforeSave. Если операция сохранения выводит окно диалога Excel Save As (Сохранить как), то переменная SaveAsUI равна True. Если процедура BeforeSave устанавливает аргумент Cancel на True, файл не будет сохранен.

 
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
a = MsgBox("Хотите   сохранить  изменения?", vbYesNc)
If a = vbNo Then Cancel = True
End Sub
 
 

6. Событие Deactivate
 
Событие Deactivate происходит, когда рабочая книга перестает быть выбранной. Следующая процедура выстраивает все открытые окна, когда рабочая книга деактивируется.
 

Private Sub Horkbook_Deactivate()
Application.Iflindows.Arrange ulArrangeStyleTiled
End Sub
 
 

ВНИМАНИЕ - Событие Deactivate происходит, когда рабочая книга перестает быть выбранной, однако оно также запускается, когда открывается новая рабочая книга или закрывается текущая. Будьте осторожны, применяя это событие; тщательно тестируйте процедуру, чтобы убедиться, что получаете желаемый результат.

 

7. Событие BeforePrint
 

Событие BeforePrint выполняется, когда пользователь пытается распечатать рабочую книгу или использует предварительный просмотр. Запрос передается процедуре события как аргумент Cancel, который может использоваться для отмены печати при значении True. К сожалению, эта процедура имеет ограничение: ока не может определять, идет ли речь о печати или о предварительном просмотре. Следующая процедура события пересчитывает всю рабочую книгу перед печатью активной рабочей книги:

 
Private Sub raorkbook_BeforePrint(Cancel As Boolean)
For Each Wk In Worksheets
Wk.Calculate
Next
End Sub
 
 

ПРИМЕЧАНИЕ - При тестировании процедуры события BeforePrint вы можете сэкономить время и бумагу, используя вместо печати предварительный просмотр.

 

Процедура события BeforePrint может применить к рабочей книге определенные форматы - например, изменить поля страницы, установить область печати, обозначить заголовки и столбцы, которые должны повторяться на каждой странице, или просто распечатать рабочий лист на одной странице. Бели есть ряд форматов, которые надо применить перед печатью, то процедура события, правильно оформляющая страницу, сбережет время на повторную печать рабочих книг с неверным форматом.

 

8. Событие BeforeClose
 

Процедура события BeforeClose выполняется перед закрытием рабочей книги. У процедуры обработки события BeforeClose объекта workbook, генерируемого перед закрытием рабочей книги, имеется параметр cancel. При значении True он блокирует закрытие книги. При значении False — закрытие разрешено.

 

Например, разрешено пользователю закрыть книгу только в случае, если в ячейку А1 введена строка "go".
 
Private Sub SJorkbook_BeforeClose(Cancel As Boolean)
If Range("A1").Value = "GO" Then
Cancel = False
Else
Cancel=True
End If
End Sub


 
ПОИСК
МОЯ КНОПКА
Контакты
МБОУ "Лицей им.Атякшева"

628260 г. Югорск, ул. Ленина 24,
ХМАО-Югра, Тюменская область
Телефон: 8 (34675)2-48-30
Факс: 8 (34675)2-48-30



89222596815 nady_er@mail.ru
Карта
sample map