TOP

VBA-Lição 11.1. Eventos de pasta de trabalho (eventos Workbook)

Podemos ter eventos de pasta de trabalho (como abertura, fechamento, etc.) que podem ser gatilhos (switches) para o código VBA.


Workbook_Open (Abrindo o livro)

Para seguir as instruções quando a pasta de trabalho for aberta, vá para ThisWorkbook e selecione Workbook:

O evento Workbook_Open será adicionado por padrão e será acionado quando a pasta de trabalho for aberta:

Private Sub Workbook_Open()

End Sub

Por exemplo, se adicionarmos a seguinte instrução, a caixa de diálogo será exibida quando a pasta de trabalho for aberta:

Private Sub Workbook_Open()
     MsgBox "Welcome"
End Sub

Workbook_BeforeClose (Evento antes de fechar a pasta de trabalho)

Para executar as instruções antes de fechar a pasta de trabalho, selecione BeforeClose:

Private Sub Workbook_BeforeClose(Cancel As Boolean)

End Sub

O fechamento da pasta de trabalho pode ser cancelado definindo a variável "Cancel" como True.

Abaixo está um exemplo em que o usuário é solicitado a confirmar o fechamento da pasta de trabalho:

Private Sub Workbook_BeforeClose(Cancel As Boolean)
     'Se o usuário responder com NO, então a variável Cancel terá o valor TRUE (que cancelará o fechamento da pasta de trabalho)
     If MsgBox("Do you really want to close this workbook ?", 36, "I confirm") = vbNo Then
         Cancel = True
     End If
End Sub

Workbook_BeforeSave (Evento antes de salvar a pasta de trabalho)

Este evento ocorre imediatamente antes da pasta de trabalho ser salva:

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

End Sub

O salvamento de um arquivo pode ser cancelado definindo a variável "Cancel" como True.

Workbook_BeforePrint (Evento antes de imprimir o livro)

Este evento ocorre antes da pasta de trabalho ser impressa:

Private Sub Workbook_BeforePrint(Cancel As Boolean)

End Sub

A impressão do arquivo pode ser cancelada configurando a variável "Cancel" como True.

Workbook_AfterSave (evento após salvar a pasta de trabalho)

Este evento ocorre imediatamente após salvar a pasta de trabalho:

Private Sub Workbook_AfterSave(ByVal Success As Boolean)

End Sub

Workbook_SheetActivate (evento de troca de planilha)

Este evento ocorre sempre que você alterna entre planilhas em uma pasta de trabalho:

Private Sub Workbook_SheetActivate(ByVal Sh As Object)

End Sub

Neste exemplo, o nome da planilha ativa é exibido na caixa de diálogo:

Private Sub Workbook_SheetActivate(ByVal Sh As Object)
     MsgBox "Name of Sheet : " & Sh.Name
End Sub

Workbook_SheetBeforeDoubleClick (evento de clique duplo em uma célula)

Este evento ocorre quando uma célula da planilha é clicada duas vezes:

Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)

End Sub

Por exemplo, podemos usar este evento para adicionar uma cor de preenchimento de célula, dependendo da planilha selecionada:

Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
     If Sh.Name = "Sheet1" Then
         Target.Interior.Color = RGB(255, 108, 0) 'Laranja
     Else
         Target.Interior.Color = RGB(136, 255, 0) 'Verde
     End If
End Sub

Workbook_SheetBeforeRightClick (Evento antes do clique com o botão direito)

Este evento ocorre antes do clique direito do mouse:

Private Sub Workbook_SheetBeforeRightClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)

End Sub

Workbook_SheetChange (evento de alteração de conteúdo da planilha)

Este evento ocorre sempre que o conteúdo da planilha é alterado:

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

End Sub

Workbook_SheetCalculate (evento SheetCalculate)

Este evento ocorre sempre que os dados de uma planilha são calculados ou recalculados:

Private Sub Workbook_SheetCalculate(ByVal Sh As Object)

End Sub

Workbook_SheetSelectionChange (evento de alteração do intervalo de células selecionado)

Este evento ocorre sempre que o conteúdo do intervalo de células selecionado na planilha é alterado:

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

End Sub

Neste exemplo, a cor de preenchimento muda se a célula A1 estiver vazia:

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
     If Range("A1") = "" Then
         Target.Interior.Color = RGB(124, 255, 255) 'Azul
    End If
End Sub

Workbook_NewSheet (evento Adicionar nova planilha)

Este evento ocorre sempre que uma nova planilha é adicionada à pasta de trabalho:

Private Sub Workbook_NewSheet(ByVal Sh As Object)

End Sub

Workbook_SheetFollowHyperlink (evento de clique no link)

Este evento ocorre quando um link (hipertexto) é clicado:

Private Sub Workbook_SheetFollowHyperlink(ByVal Sh As Object, ByVal Target As Hyperlink)

End Sub