Вы можете запустить свой макрос / фрагмент VBA, когда ячейка меняет свое значение, когда происходит двойной щелчок, когда выбирается лист и т. Д. Во всех этих случаях мы используем обработчик событий рабочего листа. Обработчик событий помогает нам запускать код VBA всякий раз, когда происходит определенное событие.

В этой статье мы кратко узнаем о каждом обработчике событий рабочего листа.

Что такое обработчик событий рабочих таблиц? Обработчик событий рабочего листа — это подпрограмма, которая является локальной для модуля рабочего листа.

Где писать код обработчика событий рабочего листа?

image

События рабочего листа записываются только в объекты листов. Если вы напишете событие рабочего листа в каком-либо модуле или модуле класса, ошибки не будет, но они просто не будут работать.

Писать в объект листа. Дважды щелкните по нему или щелкните правой кнопкой мыши и щелкните просмотреть код. Будет показана область написания кода.

Как написать код для конкретного события на листе?

Теперь, когда вы находитесь в режиме редактирования, в раскрывающемся меню в верхнем левом углу вы увидите общие. Щелкните раскрывающийся список и выберите рабочий лист.

Теперь в раскрывающемся списке в правом верхнем углу будут отображаться все события. Выберите то, что вам нужно, и скелетный код этого события будет написан для вас.

image

Каждое событие имеет фиксированное имя процедуры. Это зарезервированные имена подпрограмм. Вы не можете использовать их для других подпрограмм на листе. В модуле они будут работать как обычная подпрограмма.

Важно: Каждая подпрограмма из этого списка будет запускаться при указанном событии .

Один тип процедуры события рабочего листа может быть записан только один раз на одном листе. Если вы напишете две одинаковые процедуры обработки событий на одном листе, это приведет к ошибке, и ни одна из них не будет выполнена. Конечно, ошибка подпрограмм будет неоднозначной .

Давайте вкратце узнаем о каждом из событий.

1. Событие TheWorksheet_Change (ByVal Target As Range) Это событие срабатывает, когда мы вносим какие-либо изменения в содержащие рабочие листы (без форматирования). Если вы хотите что-то сделать, если во всем листе были внесены какие-либо изменения, то код будет следующим:

Private Sub Worksheet_Change(ByVal Target As Range)

'do somehting

Msgbox "done something"

End Sub

«Цель» всегда является активной ячейкой.

Другой пример: вы можете указать дату и время в ячейке B1, если A1 изменится. В этом случае мы используем событие worksheet_change. Код будет выглядеть так:

Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Address = "$A$1" Then

Range("B1").Value2 = Format(Now(), "hh:mm:ss")

End If

End Sub

Это будет нацелено только на ячейку A1.

Если вы хотите настроить таргетинг на диапазон, используйте следующий пример:

link: / events-in-vba-run-macro-if-any-change-made-on-sheet-range [Запустить макрос, если любое изменение, сделанное на листе в указанном диапазоне]

2. TheWorksheet_SelectionChange (ByVal Target As Range) * Событие Как следует из названия, это событие запускается при изменении выбора. Другими словами, если ваш курсор находится в ячейке A1 и перемещается в другую ячейку, код этой подпрограммы будет выполнен.

Приведенный ниже код изменит цвет активных ячеек, если он изменится, и если это четная строка.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

If Target.Row Mod 2 = 0 Then

Target.Interior.ColorIndex = 22

End If

End Sub

Теперь, когда мой курсор будет перемещаться по четной строке, он будет окрашен. Ячейки нечетных строк будут сохранены.

image

Другой пример события Worksheet_SelectionChange:

link: / events-in-vba-simplest-vba-code-to-highlight-current-row-and-column-using [Простейший код VBA для выделения текущей строки и столбца с использованием]

3. Событие Worksheet_Activate () Это событие запускается, когда активируется код события, содержащий лист.

Скелетный код этого события:

Private Sub Worksheet_Activate()

End Sub

Простой пример показывает имя листа, когда он выбирается.

Private Sub Worksheet_Activate()

MsgBox "You are on " & ActiveSheet.Name

End Sub

Как только вы перейдете на лист, содержащий этот код, событие запустится и будет показано сообщение «Вы находитесь на листе имя»

(Sheet2 в моем случае).

4. Событие Worksheet_Deactivate () Это событие срабатывает при выходе из кода, содержащего лист. Другими словами, если вы хотите что-то сделать, например, скрыть строки или что-то еще, когда вы покидаете лист, используйте это событие VBA. Синтаксис:

Private Sub Worksheet_Deactivate()

'your code

'

End Sub

В приведенном ниже примере события Worksheet_Deativate просто появится сообщение о том, что вы покинули мастер-лист, когда вы покинете этот лист.

Private Sub Worksheet_Deactivate()

MsgBox "You Left The Master Sheet"

End Sub

image

===

5. Событие Worksheet_BeforeDelete () * Это событие запускается, когда вы подтверждаете удаление события VBA, содержащего лист. Синтаксис прост:

Private Sub Worksheet_BeforeDelete()

End Sub

Приведенный ниже код спросит вас, хотите ли вы скопировать содержимое листа об удалении.

Private Sub Worksheet_BeforeDelete()

ans = MsgBox("Do you want to copy the content of this sheet to a new sheet?", vbYesNo)

If ans = True Then

'code to copy

End If

End Sub

6. TheWorksheet_BeforeDoubleClick (ByVal Target As Range, Cancel As Boolean) * Событие Это событие запускается при двойном щелчке по целевой ячейке. Синтаксис этого события рабочего листа VBA:

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)

End Sub

Если вы не установите целевую ячейку или диапазон, он будет срабатывать при каждом двойном щелчке по листу.

Переменная Cancel — это логическая переменная. Если вы установите его True, действия по умолчанию не произойдет. Это означает, что если вы дважды щелкните по ячейке, она не попадет в режим редактирования.

Приведенный ниже код заставит ячейку заполниться цветом, если вы дважды щелкните любую ячейку.

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)

Cancel = True

Target.Interior.ColorIndex = 7

End Sub

Приведенный ниже код нацелен на ячейку A1. Если он уже заполнен указанным цветом, он исчезнет. Это очень похоже на кнопку или флажок.

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)

If Target.Address = "$A$1" Then



Cancel = True

If Target.Interior.ColorIndex = 4 Then

Target.Interior.ColorIndex = xlColorIndexNone

Else

Target.Interior.ColorIndex = 4

End If



End If



End Sub

image

7. TheWorksheet_BeforeRightClick (ByVal Target As Range, Cancel As Boolean) * Событие Это событие запускается при щелчке правой кнопкой мыши по целевой ячейке. Синтаксис этого события рабочего листа VBA:

Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)

Cancel = True

'

'your code

'

End Sub

Приведенный ниже код заполнит ячейку значением 1, если вы щелкните по нему правой кнопкой мыши.

Он не будет отображать параметры щелчка правой кнопкой мыши по умолчанию, поскольку мы установили для оператора «Отмена» значение True.

Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)

Cancel = True

Target.Value = 1

End Sub

8. TheWorksheet_Calculate () * Событие Если вы хотите, чтобы что-то происходило, когда Excel вычисляет лист, используйте это событие. Он срабатывает всякий раз, когда Excel вычисляет лист. Синтаксис прост:

Private Sub Worksheet_Calculate()

'

'your code

'

End Sub
Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)

'

'your code

'

End Sub

Вы можете установить целевую гиперссылку, если хотите. Если вы не установите целевую гиперссылку, она будет выполнена, если вы нажмете любую гиперссылку в коде, содержащем лист.

Так что да, ребята, это были некоторые основные события рабочего листа, которые вам пригодятся, если вы о них знаете. Ниже приведены некоторые статьи по теме, которые вы можете прочитать.

Если у вас есть какие-либо сомнения относительно этой статьи или любой другой статьи, связанной с Excel / VBA, сообщите нам об этом в разделе комментариев ниже.

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

link: / tips-using-worksheet-change-event-to-run-macro-when-any-change-is-made [Использование события изменения рабочего листа для запуска макроса при любом изменении] * | Итак, чтобы запускать ваш макрос всякий раз, когда лист обновляется, мы используем события рабочего листа VBA.

link: / events-in-vba-run-macro-if-any-change-made-on-sheet-range [Запустить макрос, если любое изменение, сделанное на листе в указанном диапазоне] * | Чтобы запустить код макроса при изменении значения в указанном диапазоне, используйте этот код VBA. Он обнаруживает любые изменения, сделанные в указанном диапазоне, и запускает событие.

link: / events-in-vba-simplest-vba-code-to-highlight-current-row-and-column-using [Простейший код VBA для выделения текущей строки и столбца с использованием] | Используйте этот небольшой фрагмент VBA, чтобы выделить текущую строку и столбец листа.

Популярные статьи:

link: / keyboard-formula-shortcuts-50-excel-shortcuts-to-вашу-продуктивность [50 комбинаций клавиш Excel для повышения вашей продуктивности] | Выполняйте свою задачу быстрее. Эти 50 ярлыков сделают вашу работу в Excel еще быстрее.

link: / формулы-и-функции-введение-функции-vlookup [Функция ВПР в Excel] | Это одна из наиболее часто используемых и популярных функций Excel, которая используется для поиска значений из разных диапазонов и листов. link: / tips-countif-in-microsoft-excel [COUNTIF в Excel 2016] | Подсчитайте значения с условиями, используя эту удивительную функцию. Вам не нужно фильтровать данные для подсчета определенного значения.

Функция Countif важна для подготовки вашей приборной панели.

link: / excel-formula-and-function-excel-sumif-function [Как использовать функцию СУММЕСЛИ в Excel] | Это еще одна важная функция приборной панели. Это поможет вам суммировать значения для конкретных условий.