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

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

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

Этот код работает только с компонентами книги. Это сама рабочая тетрадь, это листы и диапазоны.

Куда писать код обработчика событий книги?

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

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

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

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

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

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

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

Конечно, ошибка подпрограмм будет неоднозначной ._

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

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

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)

'do something

Msgbox "done something"

End Sub

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

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

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)

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

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

End If

End Sub

Это будет нацелено только на ячейку A1 на каждом листе, поскольку мы не указали объект «sh».

  1. Событие Workbook_Activate () Это событие запускается, когда активируется код события, содержащий книгу. Скелетный код этого события:

Private Sub Workbook_Activate()

End Sub

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

Private Sub Workbook_Activate()

MsgBox "You are on workbook " & Activeworkbook.Name

End Sub

Как только вы войдете в книгу, содержащую этот код, событие запустится, и будет показано сообщение «Вы находитесь на имени книги» (в моем случае — Sheet2).

  1. Событие Workbook_Open () Это один из наиболее часто задаваемых вопросов: как запустить макрос, как только книга откроется. Это ответ. Это событие книги запускается, как только книга открывается. В отличие от Workbook_Activate () этот код запускается только один раз, а не каждый раз, когда он активируется.

Private Sub Workbook_Open()

'your code

'

End Sub

В приведенном ниже примере события Workbook_Open просто появится приветственное сообщение, когда вы откроете код, содержащий книгу.

Private Sub Workbook_Open()

MsgBox "Welcome to the Master File"

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

Private Sub Workbook_Deactivate()

'your code

'

End Sub

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

Private Sub Workbook_Deactivate()

MsgBox "You Left The Master Sheet"

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

Private Sub Workbook_BeforeClose(Cancel as Boolean)

End Sub

Для параметра Отмена можно задать значение true, если вы хотите, чтобы книга оставалась открытой.

В приведенном ниже коде вас спросят, хотите ли вы сохранить содержимое книги о закрытии.

Private Sub Workbook_BeforeClose(Cancel as Boolean)

ans = MsgBox("Do you want to save the content of this workbook?", vbYesNo)

If ans = True Then

thisworkbook.save

End If

End Sub
  1. Событие Workbook_BeforeSave (ByVal SaveAsUI As Boolean, Cancel As Boolean). Это событие запускается перед сохранением книги. Синтаксис прост:

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)

End Sub

SaveAsUI имеет значение True, если в книге есть изменения (не в VBA).

Для параметра Отмена можно установить значение true, если вы хотите, чтобы книга оставалась несохраненной.

В приведенном ниже коде вас спросят, хотите ли вы сохранить содержимое книги о сохранении.

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean,Cancel as Boolean)

ans = MsgBox("Do you really want to save the content of this workbook?", vbYesNo)

If ans = False Then

Cancel = True

End If

End Sub
  1. Событие Workbook_BeforeSave (ByVal SaveAsUI As Boolean, Cancel As Boolean) Событие Это событие запускается перед сохранением книги. Синтаксис прост:

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)

End Sub

Для SaveAsUI установлено значение True, если есть изменение в книге (не в VBA).

Для параметра Отмена можно установить значение true, если вы хотите, чтобы книга оставалась несохраненной.

В приведенном ниже коде вас спросят, хотите ли вы сохранить содержимое книги о сохранении.

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean,Cancel as Boolean)

ans = MsgBox("Do you really want to save the content of this workbook?", vbYesNo)

If ans = False Then

Cancel = True

End If

End Sub
  1. Событие Workbook_NewSheet (ByVal Sh As Object) Это событие возникает, когда вы добавляете новый лист в книгу. Синтаксис прост:

Private Sub Workbook_NewSheet(ByVal Sh As Object)

End Sub

Sh — это листовой объект. Тип фактически является основным объектом, поэтому, если мы добавим лист диаграммы, лист макроса или лист диалога, событие все равно будет работать.

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

Private Sub Workbook_NewSheet(ByVal Sh As Object)

MsgBox "You added a new sheet. " & Sh.Name

End Sub

Есть еще много событий объекта книги. Мы не можем обсуждать их все здесь. Если вы хотите узнать о каком-то конкретном событии, спросите в разделе комментариев ниже. Я надеюсь, что смог объяснить в этой статье основы событий рабочей тетради. Сообщите мне, помогло ли это вам в разделе комментариев ниже.

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

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] | Это еще одна важная функция приборной панели. Это поможет вам суммировать значения для конкретных условий.