TOP
VBA-Урок 11.2. События рабочего листа (Worksheet Events)
На предыдущем уроке мы рассматривали события, относящиеся к целой книги. Сейчас мы сфокусируемся на событиях связанных с отдельным листом.
Worksheet_SelectionChange (Открытие книги)
Чтобы выполнить инструкции, основанные на событиях для отдельного листа, выберите лист в редакторе, а затем Worksheet :
Событие SelectionChange будет добавлено по умолчанию. Это событие выполняется когда бы не изменялось содержание диапазона:
- Private Sub Worksheet_SelectionChange (ByVal Target As Range)
-
- End Sub
Private Sub Worksheet_SelectionChange (ByVal Target As Range)
End Sub
Например, следующий код добавляет цвета заливки одного или более выбранных ячеек и автоматически удаляет цвет заливки от предыдущего выбранного диапазона, когда данный диапазон меняется:
- Private Sub Worksheet_SelectionChange(ByVal Target As Range)
- Static previous_selection As String
-
- If previous_selection <> "" Then
-
- Range(previous_selection).Interior.ColorIndex = xlColorIndexNone
- End If
-
-
- Target.Interior.Color = RGB(181, 244, 0)
-
-
- previous_selection = Target.Address
- End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Static previous_selection As String
If previous_selection <> "" Then
'Removing background color from previous selection :
Range(previous_selection).Interior.ColorIndex = xlColorIndexNone
End If
'Adding background color to current selection :
Target.Interior.Color = RGB(181, 244, 0)
'Saving the address of the current selection :
previous_selection = Target.Address
End Sub
Worksheet_Activate (Событие активации листа)
Это событие возникает при активации рабочего листа
- Private Sub Worksheet_Activate ()
-
- End Sub
Private Sub Worksheet_Activate ()
End Sub
Worksheet_Deactivate (Событие деактивации листа)
Это событие возникает при активации другого рабочего листа
- Private Sub Worksheet_Deactivate ()
-
- End Sub
Private Sub Worksheet_Deactivate ()
End Sub
Worksheet_BeforeDoubleClick (Событие двойного щелчка по ячейке)
Это событие возникает при двойном щелчке на ячейке рабочего листа:
- Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
-
- End Sub
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
End Sub
Worksheet_BeforeRightClick (Событие перед правым кликом)
Это событие возникает перед самым кликом правой кнопки мыши по рабочему листу
- Private Sub Worksheet_BeforeRightClick (ByVal Target As Range, Cancel As Boolean)
-
- End Sub
Private Sub Worksheet_BeforeRightClick (ByVal Target As Range, Cancel As Boolean)
End Sub
Worksheet_Calculate (Событие перерасчета листа)
Это событие возникает каждый раз, когда рассчитываются или пересчитываются данные на рабочем листе
- Private Sub Worksheet_Calculate ()
-
- End Sub
Private Sub Worksheet_Calculate ()
End Sub
Worksheet_Change (Событие изменения содержимого ячейки)
Это событие возникает каждый раз, когда изменяется содержимое ячеек на заданном листе:
- Private Sub Worksheet_Change(ByVal Target As Range)
-
- End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
End Sub
Worksheet_FollowHyperlink (Событие нажатия на ссылку)
Это событие возникает при нажатии на ссылку (гипертекст)
- Private Sub Worksheet_FollowHyperlink (ByVal Target As Hyperlink)
-
- End Sub
Private Sub Worksheet_FollowHyperlink (ByVal Target As Hyperlink)
End Sub
Temporarily deactivate all events (Временное отключение всех событий)
Чтобы выполнять код без каких-либо событий, вставьте его между двумя строчками такого кода:
- Application.EnableEvents = False
- "Инструкции
- Application.EnableEvents = True
Application.EnableEvents = False '=> отключение событий
"Инструкции
Application.EnableEvents = True '=> повторное включение событий
Статьи по теме:
VBA-Урок 11.1. События рабочей книги (Workbook Events)
VBA-Урок 12.1. Пользовательские формы (UserForm)