TOP
VBA-Урок 11.1. События рабочей книги (Workbook Events)
Мы можем иметь события рабочей книги (например, открытие, закрытие и т.д.), которые могут быть триггерами (переключателями) для VBA кода.
Workbook_Open (Открытие книги)
Чтобы выполнить инструкции, когда открывается рабочая книга, идем к ThisWorkbook и выбираем Workbook :
Событие Workbook_Open будет добавлено по умолчанию и будет действовать во время открытия книги:
- Private Sub Workbook_Open ()
-
- End Sub
Private Sub Workbook_Open ()
End Sub
Например, если мы добавим следующую инструкцию, тогда диалоговое окно будет отображено при открытии книги:
- Private Sub Workbook_Open()
- MsgBox "Welcome"
- End Sub
Private Sub Workbook_Open()
MsgBox "Welcome"
End Sub
Workbook_BeforeClose (Событие перед закрытием книги)
Чтобы выполнить инструкции перед самым закрытием книги, выберите BeforeClose
- Private Sub Workbook_BeforeClose (Cancel As Boolean)
-
- End Sub
Private Sub Workbook_BeforeClose (Cancel As Boolean)
End Sub
Закрытие книги может быть отменено, если присвоить значение True к переменной "Cancel".
Ниже приведен пример, в котором пользователя спрашивают подтверждение на закрытие рабочей книги:
- Private Sub Workbook_BeforeClose (Cancel As Boolean)
-
- If MsgBox ("Вы действительно хотите закрыть эту книгу?", 36, "Подтверждаю") = vbNo Then
- Cancel = True
- End If
- End Sub
Private Sub Workbook_BeforeClose (Cancel As Boolean)
'Если пользователь отвечает NO, то переменная Cancel иметь значение TRUE (которое отменит закрытие рабочей книги)
If MsgBox ("Вы действительно хотите закрыть эту книгу?", 36, "Подтверждаю") = vbNo Then
Cancel = True
End If
End Sub
Workbook_BeforeSave (Событие перед сохранением книги)
Это событие возникает сразу перед самым сохранением рабочей книги:
- Private Sub Workbook_BeforeSave (ByVal SaveAsUI As Boolean, Cancel As Boolean)
-
- End Sub
Private Sub Workbook_BeforeSave (ByVal SaveAsUI As Boolean, Cancel As Boolean)
End Sub
Сохранение файла может быть отменено присвоением значения True к переменной "Cancel".
Workbook_BeforePrint (Событие перед печатью книги)
Это событие возникает перед самой печатью рабочей книги:
- Private Sub Workbook_BeforePrint (Cancel As Boolean)
-
- End Sub
Private Sub Workbook_BeforePrint (Cancel As Boolean)
End Sub
Печать файла может быть отменена присвоением значения True к переменной "Cancel".
Workbook_AfterSave (Событие после сохранения книги)
Это событие возникает сразу после сохранением рабочей книги:
- Private Sub Workbook_AfterSave (ByVal Success As Boolean)
-
- End Sub
Private Sub Workbook_AfterSave (ByVal Success As Boolean)
End Sub
Workbook_SheetActivate (Событие переключения рабочего листа)
Это событие возникает каждый раз, когда вы переключаетесь между листами рабочей книги:
- Private Sub Workbook_SheetActivate(ByVal Sh As Object)
-
- End Sub
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
End Sub
В этом примере, название активированного листа отображается в диалоговом окне
- Private Sub Workbook_SheetActivate (ByVal Sh As Object)
- MsgBox "Name of Sheet:" & Sh.Name
- End Sub
Private Sub Workbook_SheetActivate (ByVal Sh As Object)
MsgBox "Name of Sheet:" & Sh.Name
End Sub
Workbook_SheetBeforeDoubleClick (Событие двойного щелчка по ячейке)
Это событие возникает при двойном щелчке на ячейке рабочего листа
- Private Sub Workbook_SheetBeforeDoubleClick (ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
-
- End Sub
Private Sub Workbook_SheetBeforeDoubleClick (ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
End Sub
Например, мы можем использовать это событие, чтобы добавить цвет заливки ячейки, в зависимости от выбранного листа:
- Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
- If Sh.Name = "Sheet1" Then
- Target.Interior.Color = RGB(255, 108, 0)
- Else
- Target.Interior.Color = RGB(136, 255, 0)
- End If
- End Sub
Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
If Sh.Name = "Sheet1" Then
Target.Interior.Color = RGB(255, 108, 0) 'Orange color
Else
Target.Interior.Color = RGB(136, 255, 0) 'Green color
End If
End Sub
Workbook_SheetBeforeRightClick (Событие перед правым кликом)
Это событие возникает перед самым кликом правой кнопки мыши
- Private Sub Workbook_SheetBeforeRightClick (ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
-
- End Sub
Private Sub Workbook_SheetBeforeRightClick (ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
End Sub
Workbook_SheetChange (Событие изменения содержания листа)
Это событие возникает каждый раз, когда меняется содержание рабочего листа
- Private Sub Workbook_SheetChange (ByVal Sh As Object, ByVal Target As Range)
-
- End Sub
Private Sub Workbook_SheetChange (ByVal Sh As Object, ByVal Target As Range)
End Sub
Workbook_SheetCalculate (Событие пересчете листа)
Это событие возникает каждый раз, когда рассчитываются или пересчитываются данные на рабочем листе:
- Private Sub Workbook_SheetCalculate(ByVal Sh As Object)
-
- End Sub
Private Sub Workbook_SheetCalculate(ByVal Sh As Object)
End Sub
Workbook_SheetSelectionChange (Событие изменения выбранного диапазона ячеек)
Это событие возникает каждый раз, когда меняется содержание выбранного диапазона ячеек на расчетном листе
- Private Sub Workbook_SheetSelectionChange (ByVal Sh As Object, ByVal Target As Range)
-
- End Sub
Private Sub Workbook_SheetSelectionChange (ByVal Sh As Object, ByVal Target As Range)
End Sub
В этом примере, изменяется цвет заливки, если ячейка А1 пуста
- Private Sub Workbook_SheetSelectionChange (ByVal Sh As Object, ByVal Target As Range)
- If Range ("A1") = "" Then
- Target.Interior.Color = RGB (124, 255, 255)
- End If
- End Sub
Private Sub Workbook_SheetSelectionChange (ByVal Sh As Object, ByVal Target As Range)
If Range ("A1") = "" Then
Target.Interior.Color = RGB (124, 255, 255) 'Blue color
End If
End Sub
Workbook_NewSheet (Событие добавления нового листа)
Это событие возникает каждый раз, когда добавляется новый лист в рабочую книгу:
- Private Sub Workbook_NewSheet(ByVal Sh As Object)
-
- End Sub
Private Sub Workbook_NewSheet(ByVal Sh As Object)
End Sub
Workbook_SheetFollowHyperlink (Событие нажатия на ссылку)
Это событие возникает при нажатии на ссылку (гипертекст):
- Private Sub Workbook_SheetFollowHyperlink(ByVal Sh As Object, ByVal Target As Hyperlink)
-
- End Sub
Private Sub Workbook_SheetFollowHyperlink(ByVal Sh As Object, ByVal Target As Hyperlink)
End Sub