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)