VBA - События
VBA, программирование, управляемое событиями, может запускаться при изменении ячейки или диапазона значений ячеек вручную. Событие изменения может упростить задачу, но вы можете очень быстро закрыть страницу, заполненную форматированием. Есть два типа событий.
- События рабочего листа
- События книги
События рабочего листа
События рабочего листа запускаются при изменении рабочего листа. Он создается путем щелчка правой кнопкой мыши на вкладке листа и выбора «просмотреть код», а затем вставки кода.
Пользователь может выбрать каждый из этих листов и выбрать «Рабочий лист» из раскрывающегося списка, чтобы получить список всех поддерживаемых событий рабочего листа.
Ниже приведены поддерживаемые события рабочего листа, которые может добавить пользователь.
Private Sub Worksheet_Activate()
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
Private Sub Worksheet_Calculate()
Private Sub Worksheet_Change(ByVal Target As Range)
Private Sub Worksheet_Deactivate()
Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
пример
Допустим, нам просто нужно вывести сообщение перед двойным щелчком.
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
MsgBox "Before Double Click"
End Sub
Вывод
После двойного щелчка по любой ячейке пользователю отображается окно сообщения, как показано на следующем снимке экрана.
События книги
События книги инициируются, когда в книге в целом происходит изменение. Мы можем добавить код для событий книги, выбрав «ThisWorkbook» и выбрав «книга» из раскрывающегося списка, как показано на следующем снимке экрана. Сразу же пользователю отображается подпроцедура Workbook_open, как показано на следующем снимке экрана.
Ниже приведены поддерживаемые события книги, которые могут быть добавлены пользователем.
Private Sub Workbook_AddinUninstall()
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Private Sub Workbook_BeforePrint(Cancel As Boolean)
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Private Sub Workbook_Deactivate()
Private Sub Workbook_NewSheet(ByVal Sh As Object)
Private Sub Workbook_Open()
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
Private Sub Workbook_SheetBeforeRightClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
Private Sub Workbook_SheetCalculate(ByVal Sh As Object)
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Private Sub Workbook_SheetDeactivate(ByVal Sh As Object)
Private Sub Workbook_SheetFollowHyperlink(ByVal Sh As Object, ByVal Target As Hyperlink)
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
Private Sub Workbook_WindowActivate(ByVal Wn As Window)
Private Sub Workbook_WindowDeactivate(ByVal Wn As Window)
Private Sub Workbook_WindowResize(ByVal Wn As Window)
пример
Скажем, нам просто нужно отображать сообщение пользователю об успешном создании нового листа всякий раз, когда создается новый лист.
Private Sub Workbook_NewSheet(ByVal Sh As Object)
MsgBox "New Sheet Created Successfully"
End Sub
Вывод
После создания нового листа Excel пользователю отображается сообщение, как показано на следующем снимке экрана.