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)
     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

Worksheet_Deactivate (Событие деактивации листа)

Это событие возникает при активации другого рабочего листа

Private Sub Worksheet_Deactivate ()

End Sub

Worksheet_BeforeDoubleClick (Событие двойного щелчка по ячейке)

Это событие возникает при двойном щелчке на ячейке рабочего листа:

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

Worksheet_Calculate (Событие перерасчета листа)

Это событие возникает каждый раз, когда рассчитываются или пересчитываются данные на рабочем листе

Private Sub Worksheet_Calculate ()

End Sub

Worksheet_Change (Событие изменения содержимого ячейки)

Это событие возникает каждый раз, когда изменяется содержимое ячеек на заданном листе:

Private Sub Worksheet_Change(ByVal Target As Range)

End Sub

Worksheet_FollowHyperlink (Событие нажатия на ссылку)

Это событие возникает при нажатии на ссылку (гипертекст)

Private Sub Worksheet_FollowHyperlink (ByVal Target As Hyperlink)

End Sub

Temporarily deactivate all events (Временное отключение всех событий)

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

Application.EnableEvents = False '=> отключение событий
"Инструкции
Application.EnableEvents = True '=> повторное включение событий

Статьи по теме:

  • VBA-Урок 11.1. События рабочей книги (Workbook Events)
  • VBA-Урок 12.1. Пользовательские формы (UserForm)