VBA - Eventos

VBA, uma programação orientada a eventos pode ser disparada quando você altera uma célula ou intervalo de valores de célula manualmente. O evento de alteração pode tornar as coisas mais fáceis, mas você pode encerrar rapidamente uma página cheia de formatação. Existem dois tipos de eventos.

  • Eventos de planilha
  • Eventos de pasta de trabalho

Eventos de planilha

Os eventos da planilha são acionados quando há uma alteração na planilha. Ele é criado clicando com o botão direito do mouse na guia da planilha e escolhendo 'visualizar código', e posteriormente colando o código.

O usuário pode selecionar cada uma dessas planilhas e escolher "Planilha" no menu suspenso para obter a lista de todos os eventos de planilha com suporte.

A seguir estão os eventos de planilha com suporte que podem ser adicionados pelo usuário.

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)

Exemplo

Digamos que só precisamos exibir uma mensagem antes de clicar duas vezes.

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
   MsgBox "Before Double Click"
End Sub

Resultado

Ao clicar duas vezes em qualquer célula, a caixa de mensagem é exibida para o usuário, conforme mostrado na imagem a seguir.

Eventos de pasta de trabalho

Os eventos da pasta de trabalho são acionados quando há uma alteração na pasta de trabalho como um todo. Podemos adicionar o código para eventos de pasta de trabalho selecionando 'ThisWorkbook' e selecionando 'workbook' no menu suspenso, conforme mostrado na captura de tela a seguir. Imediatamente, o subprocedimento Workbook_open é exibido para o usuário, conforme visto na captura de tela a seguir.

A seguir estão os eventos de pasta de trabalho com suporte que podem ser adicionados pelo usuário.

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)

Exemplo

Digamos que precisamos apenas mostrar ao usuário uma mensagem de que uma nova planilha foi criada com sucesso, sempre que uma nova planilha for criada.

Private Sub Workbook_NewSheet(ByVal Sh As Object)
   MsgBox "New Sheet Created Successfully"
End Sub

Resultado

Ao criar uma nova planilha do Excel, uma mensagem é exibida para o usuário conforme mostrado na imagem a seguir.