TOP

VBA-Урок 11.2. События рабочего листа (Worksheet Events)

На предыдущем уроке мы рассматривали события, относящиеся к целой книги. Сейчас мы сфокусируемся на событиях связанных с отдельным листом.

Worksheet_SelectionChange (Открытие книги)

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

Событие SelectionChange будет добавлено по умолчанию. Это событие выполняется когда бы не изменялось содержание диапазона:

  1. Private Sub Worksheet_SelectionChange (ByVal Target As Range)  
  2.   
  3. End Sub  

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

  1. Private Sub Worksheet_SelectionChange(ByVal Target As Range)  
  2.      Static previous_selection As String  
  3.   
  4.      If previous_selection <> "" Then  
  5.          'Removing background color from previous selection :  
  6.          Range(previous_selection).Interior.ColorIndex = xlColorIndexNone  
  7.      End If  
  8.   
  9.      'Adding background color to current selection :  
  10.      Target.Interior.Color = RGB(181, 244, 0)  
  11.   
  12.      'Saving the address of the current selection :  
  13.      previous_selection = Target.Address  
  14. End Sub  

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

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

  1. Private Sub Worksheet_Activate ()  
  2.   
  3. End Sub  

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

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

  1. Private Sub Worksheet_Deactivate ()  
  2.   
  3. End Sub  

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

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

  1. Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)  
  2.   
  3. End Sub  

Worksheet_BeforeRightClick (Событие перед правым кликом)

Это событие возникает перед самым кликом правой кнопки мыши по рабочему листу

  1. Private Sub Worksheet_BeforeRightClick (ByVal Target As Range, Cancel As Boolean)  
  2.   
  3. End Sub  

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

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

  1. Private Sub Worksheet_Calculate ()  
  2.   
  3. End Sub  

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

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

  1. Private Sub Worksheet_Change(ByVal Target As Range)  
  2.   
  3. End Sub  

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

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

  1. Private Sub Worksheet_FollowHyperlink (ByVal Target As Hyperlink)  
  2.   
  3. End Sub  

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

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

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

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

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