Lista de eventos VBA Eventos são a maneira como o Excel permite executar código com base em certas ações que acontecem em uma pasta de trabalho. Esta lista tem por objetivo servir como uma referência à criação de eventos no Excel, conforme introdução dada na aula 58. Nível do aplicativo Nível da pasta de trabalho Nível da planilha Nível da planilha de gráficos
NÍVEIS DOS EVENTOS O controle baseado nas ações de aplicativo O controle baseado em ações da pasta de trabalho O controle baseado em ações de planilha O controle baseado em ações de gráfico
NÍVEL DA PASTA DE TRABALHO Workbook_Activate() Workbook_Activate() Ocorre quando a pasta de trabalho contendo este evento se torna a pasta de trabalho ativa. Workbook_Deactivate() Workbook_Deactivate() Ocorre quando a pasta de trabalho ativa é alternada entre a pasta de trabalho contendo o evento e outra pasta de trabalho. Workbook_Open() Workbook_Open() É ativado quando uma pasta de trabalho é aberta. Workbook_BeforeSave(ByVal Workbook_BeforeSave(ByVal SaveAsUI As Ocorre quando a pasta de trabalho é Boolean, Cancel As Boolean) salva. SaveAsUI é SaveAsUI é configurado como True se for preciso exibir a caixa de diálogo Salvar Como. Cancel Cancel configurado como True impede que a pasta de trabalho seja salva. Workbook_BeforePrint(Cancel Workbook_BeforePrint(Cancel As Boolean) Ocorre quando qualquer comando de impressão é utilizado. Cancel Cancel configurado como True evita que a pasta de trabalho seja impressa. Exemplo: Dim LastRow As Long Dim PrintLog As Worksheet Worksheet Set PrintLog = Worksheets(“PrintLog”) Worksheets(“PrintLog”)
LastRow = PrintLog.Cells(PrintLog.Rows.Count, 1).End(xlUp).Row + 1 With PrintLog .Cells(LastRow, .Cells(LastRow, 1).Value = Now()
Workbook_BeforeClose(Cancel As Boolean)
Workbook_NewSheet(ByVal Sh As Object)
Workbook_WindowResize(ByVal Window)
Wn
As
Workbook_WindowActivate(ByVal Wn As Window)
Workbook_WindowDeactivate(ByVal Wn As Window)
Workbook_AddInInstall()
Workbook_AddInUninstall Workbook_SheetActivate(ByVal Object)
Sh
As
Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
.Cells(LastRow, 2).Value = Application.UserName .Cells(LastRow, 3).Value = ActiveSheet.Name End With End Sub Ocorre quando uma pasta de trabalho é fechada. Cancel configurado como True impede que a pasta de trabalho seja fechada. Ocorre quando uma nova planilha é adicionada à pasta de trabalho ativa. Sh é o novo objeto. Planilha ou planilha de Gráfico. Ocorre quando a pasta de trabalho ativa é redimensionada. Wn é a janela. Ocorre quando qualquer janela de pasta de trabalho for ativada. Wn é a janela. Esse evento inicia apenas quando a janela da pasta de trabalho é ativada. Ocorre quando qualquer janela da pasta de trabalho é desativada. Wn é a janela. Esse evento apenas quando a janela de pasta de trabalho é desativada. Ocorre quando a pasta de trabalho é instalada como um suplemento. Ativado quando é selecionado o botão Microsoft Office, Opções do Excel, Suplemento Ocorre quando uma pasta de trabalho suplemento é desinstalada. Ocorre quando alguma planilha de gráfico ou planilha na pasta de trabalho é ativada. Sh é a planilha ativa. Para afetar uma planilha específica, referencie Worksheet_Activate; para planilhas de gráfico, referencie Chart_Activate. Ocorre quando o usuário dá um clique duplo em qualquer planilha de gráfico ou planilha na pasta de trabalho ativa. Sh é a planilha ativa Target é o objeto que recebe o clique
Workbook_SheetBeforeRightClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
Workbook_SheetCalculate(ByVal Object)
Sh
As
Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
WorkBook_Sync(ByVal SyncEventType Office.MsoSyncEventType)
As
Workbook_SheetDeactivate(ByVal Object)
As
Sh
duplo. Cancel configurado como True impede que a ação padrão aconteça. Para afetar uma planilha específica referencie Worksheet_BeforeDoubleClick; para planilhas de gráfico, referencie Chart_BeforeDoubleClick Ocorre quando o usuário clica com o botão direito do mouse em qualquer planilha na pasta de trabalho ativa. Sh é a planilha ativa Target é o objeto clicado com o botão direito do mouse Cancel configurado como True impede que a ação padrão aconteça Para afetar uma planilha específica referencie Worksheet_BeforeRightClick; para planilhas de gráfico, referencie Chart_BeforeRightClick Ocorre quando qualquer intervalo em uma planilha é alterado. Sh é a planilha Target é o intervalo alterado Para afetar uma planilha específica, referencie Worksheet_Calculate; para planilhas de gráfico referencie Chart_Calculate. Ocorre quando qualquer intervalo em uma planilha é alterado. Sh é a planilha Target é o intervalo alterado. Para afetar uma planilha específica, referencie Worksheet_Change. Ocorre quando a cópia local de uma planilha em uma pasta de trabalho que faz parte de um espaço de trabalho de documento é sincronizada como a cópia no servidor. SyncEventType é o status da sincronização. Ocorre quando qualquer planilha de gráfico ou planilha na pasta de trabalho é desativada. Sh é a planilha que está sendo modificada. Para afetar uma planilha específica,
Workbook_SheetFollowHyperlink(ByVal As Object, ByVal Target As Hyperlink)
Sh
Workbook_SheetSelectionChange(ByVal As Object, ByVal Target As Range)
Sh
Workbook_PivotTableCloseConnection(ByVal Target As PivotTable)
Workbook_PivotTableOpenConnection(ByVal Target As PivotTable)
Workbook_RowsetComplete(ByVal Description As String, ByVal Sheet As String, ByVal Sucess As Boolean)
referencie Worksheet_Deactivate; para planilhas de gráfico, referencie Chart_Deactivate. Ocorre quando qualquer hiperlink é clicado no Excel. Sh é a planilha ativa Target é o hiperlink Para afetar uma planilha específica, referencie Worksheet_FollowHyperlink Ocorre quando um novo intervalo é selecionado em qualquer planilha. Sh é a planilha ativa Target é o intervalo afetado. Ocorre quando um relatório de tabela dinâmica fecha sua conexão com a origem dos dados. Target é a tabela dinâmica que fechou a conexão Ocorre quando um relatório de tabela dinâmica abre uma conexão com a origem dos dados. Target é a tabela dinâmica que fechou a conexão. Ocorre quando um usuário pesquisa um recordset ou chama a ação rowset em uma Tabela Dinâmica OLAP. Description é uma descrição do evento. Sheet ou Plan é o nome da planilha em que o recordset é criado Sucess indica sucesso ou falha
NÍVEL DE PLANILHA Worksheet_Activate() Ocorre quando a planilha em que está o evento se torna a planilha ativa. Workbook_Deactivate() Ocorre quando a pasta de trabalho ativa é alternada entre a pasta de trabalho contendo o evento e outra pasta de trabalho. Worksheet_BeforeDoubleClick(ByVal Target Permite controlar o que acontece As Range, Cancel As Boolean) quando o usuário dá um clique duplo na planilha Target é o intervalo selecionado na planilha Cancel é configurado como False por padrão, mas se configurado como
True, impede que a ação padrão como inserir uma célula, aconteça. O exemplo muda a cor interna da célula para vermelho Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) Dim myColor As Integer Target.Interior.ColorIndex = 3 End Sub Worksheet_BeforeRightClick(ByVal Target É desencadeado quando o usuário clica As Range, Cancel As Boolean) com o botão direito do mouse em um intervalo. Target é o objeto clicado com o botão direito do mouse Cancel configurado como True impede que a ação padrão aconteça. Worksheet_Calculate() Ocorre depois que uma planilha é recalculada. Worksheet_Change(ByVal Target As Range) É desencadeado por uma alteração no valor de uma célula, por exemplo, quando o texto é inserido, editado ou excluído. Target é a célula que foi alterada. A função abaixo alterna rapidamente a data digitada sem os dois pontos com a data com dois pontos, facilitando a digitação de horas '
'No evento on Change é passada a posição que está sendo alterada Private Sub Worksheet_Change(ByVal Target As Range) 'Se a coluna do endereço for "A" e o valor for maior que 1 aplica a formatação If Target.Column = 1 And Target.Value > 1 Then 'Desliga a chamada do evento para que não fique recursiva a função Application.EnableEvents
= False 'Realiza a formatação da hora Target.Value = Left(Target.Value, 2) & ":" & Right(Target.Value, 2) 'Liga novamente a chamada do evento para que volte a funcionar Application.EnableEvents = True End If End Sub '
Worksheet_SelectionChange(ByVal As Range)
Target Ocorre quando um novo intervalo é selecionado. Target é o intervalo recentemente selecionado. Worksheet_FollowHyperlink(ByVal Target As Ocorre quando um hiperlink recebe Hyperlink) um clique. Target é o hiperlink. EVENTOS DE PLANILHA DE GRÁFICO Eventos de gráfico ocorrem quando um gráfico é alterado ou ativado. Os gráficos incorporados exigem o uso de módulos de classe para acessar os eventos. Gráficos incorporados São os gráficos inseridos nas planilhas. Como os gráficos incorporados não criam planilhas de gráfico, os eventos de gráfico não estão prontamente disponíveis. Você pode disponibilizá-los adicionando um módulo de classe como a seguir: 1. Insira um módulo de classe, clicando no módulo VBA em Inserir, Módulo de classe 2. Renomeie o módulo de classe como cl_ChartEvents 3. Insira a seguinte linha de código no módulo de classe: Public WithEvents myChartClass As Chart Os eventos agora estão disponíveis para o gráfico. Eles são acessoados no módulo de classe em vez de em uma planilha de gráfico.
4. Insira um módulo padrão 5. Insira as seguintes linhas de código no módulo padrão Dim myClassModule As New cl_ChartEvents Sub InitializeChart() Set myClassModule.myChartClass = Worksheets(1).ChartObjects(1).Chart End Sub Essas linhas inicializam o gráfico incorporado a ser reconhecido como um objeto Gráfico. O procedimento deve ser executado uma vez por sessão. (Utilize Workbook_Open para automatizar isso) NÍVEL DE PLANILHA (PLANILHA DE GRÁFICO) Worksheet_Activate() Ocorre quando a planilha em que está o evento se torna a planilha ativa. Chart_Activate() Ocorre quando uma planilha de gráfico é ativada ou alterada Chart_BeforeDoubleClick(ByVal Ocorre quando qualquer parte de um gráfico ElementID As Long, ByVal Arg1 As Long, recebe um clique duplo. ByVal Arg2 As Long, Cancel As Boolean) ElementID é a parte do gráfico que recebe um clique duplo, como a legenda; Arg1 e Arg2 são dependentes do ElementID; Cancel configurado como True impede que a ação padrão de um clique duplo ocorra. O exemplo oculta a legenda quando ela recebe um clique duplo, dar um duplo clique no eixo abre novamente a legenda. Private Sub MyChartClassChart_BeforeDoubleClick(ByVal ElementID As Long, ByVal Arg1 As Long, ByVal Arg2 As Long, Cancel As Boolean) Select Case ElementID Case xlLegend Me.HasLegend = False Cancel = True Case xlAxis Me.HasLegend = True Cancel = True
Chart_BeforeRightClick(Cancel Boolean)
As
Chart_Calculate() Chart_Deactivate() Chart_MouseDown(ByVal Button As Long, ByVal Shift As Long, ByVal x As Long, ByVal y As Long)
Chart_MouseMove(ByVal Button As Long, ByVal Shift As Long, ByVal x As Long, ByVal y As Long)
Chart_MouseUp(ByVal Button As Long, ByVal Shift As Long, ByVal x As Long, ByVal y As Long)
Chart_Resize()
Chart_Select(ByVal ElementID As Long, ByVal Arg1 As Long, ByVal Arg2 As Long)
End Select End Sub Ocorre quando um gráfico é clicado com o botão direito do mouse. Cancel configurado como True impede que a ação padrão de clicar com o botão direito do mouse ocorra. Ocorre quando os dados de um gráfico são alterados Ocorre quando outra planilha se torna a planilha ativa. Ocorre quando o cursor estiver sobre o gráfico e qualquer botão do mouse for pressionado. Button é o botão do mouse que foi clicado Shift é se uma tecla Shift, Ctrl, ou Alt foi pressionada X é a coordenada X do cursor quando o botão é pressionado Y á a coordenada Y do cursor quando o botão é pressionado. Ocorre quando o cursor é movido sobre um gráfico. Button é o botão do mouse que está sendo mantido pressionado, se houver algum Shift [e quando uma tecla Shift, Ctrl ou Alt foi pressionada X é a coordenada X do cursor do gráfico Y é a coordenada Y do cursor no gráfico. Ocorre quando qualquer botão do mouse é liberado enquando o cursosr está no gráfico. Button é o botão do mouse que foi clicado Shift é se uma tecla Shift, Ctrl, ou Alt foi pressionada X é a coordenada X do cursor quando o botão é pressionado Y á a coordenada Y do cursor quando o botão é pressionado. Ocorre quando um gráfico é redimensionado por meio das alças de dimensionamento, mas não quando o tamanho é alterado por meio do controle de tamanho na faixa Formato das ferramentas de gráfico. Ocorre quando um elemento gráfico é selecionado. ElementID é a parte do gráfico selecionada, como por exemplo a legenda Arg1 e Arg2 são dependentes do ElementID
Chart_SeriesChange(ByVal SeriesIndex Ocorre quando um ponto nos dados do As Long, ByVal PointIndex As Long) gráfico é atualizado. SeriesIndex é o deslocamento na coleção Série da série atualizada PointIndex é o deslocamento na coleção Ponto no ponto atualizado EVENTOS NO NÍVEL DE APLICATIVO Eventos no nível do aplicativo afetam todas as pastas de trabalho abertas em uma sessão do Excel. Esses eventos requerem um módulo de classes para acessá-los (semelhante ao módulo de classe utilizado para acessar eventos para eventos de gráfico incorporado). Siga estes passos para criar o módulo de classe: 1. Insira um módulo de classe, clicando no módulo VBA em Inserir, Módulo de classe 2. Renomeie o módulo para cl_AppEvents 3. Insira a seguinte linha de código no módulo de classe Public WithEvents AppEvent As Application
Os eventos de aplicativo estão agora disponíveis para a pasta de trabalho, como mostrado na Figura. Eles são acessados no módulo de classe em vez de em um módulo padrão.
4. Insira um módulo padrão 5. Insira as seguintes linhas de código no módulo padrão Dim myAppEvent As New cl_AppEvents Sub InitializeAppEvent() Set myAppEvent.AppEvent = Application End Sub
Estas linhas inicializam o aplicativo para que ele reconheça eventos de aplicativo. O procedimento deve ser executado uma vez por sessão. (Utilize Workbook_Open para automatizar isso) NÍVEL DE APLICATIVO AppEvent_AfterCalculate() Ocorre depois que todos os cálculos estão completos e não há nenhuma consulta em andamento. AppEvent_NewWorkbook(ByVal Wb As Ocorre quando uma nova pasta de Workbook) trabalho é criada. Wb é a nova pasta de trabalho. O exemplo organiza as pastas de trabalho em uma configuração lado a lado.
AppEvent_SheetActivate(ByVal Sh As Object)
AppEvent_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
AppEvent_SheetBeforeRightClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
AppEvent_SheetCalculate(ByVal Sh As Object)
Private Sub AppEvent_NewWorkbook(ByVal Wb As Workbook) Application.Windows.Arrange xlArrangeStyleTiled End Sub Ocorre quando uma planilha é ativada. Sh é a planilha (planilha comum ou de gráfico). Ocorre quando o usuário dá um clique duplo em uma planilha. Target é o intervalo selecionado na planilha Cancel é configurado como False por padrão, mas se configurado como True impede que a ação padrão seja execudada. Ocorre quando o usuário clica com o botão direito do mouse em qualquer planilha. Sh é a planilha ativa Target é o objeto clicado com o botão direito do mouse Cancel configurado como True impede que a ação padrão acontça. Ocorre quando qualquer planilha é recalculada ou quaisquer dados atualizados são plotados em um gráfico.
AppEvent_SheetChange(ByVal Sh As Object, ByVal Target As Range)
AppEvent_SheetDeactivate(ByVal Sh As Object)
AppEvent_SheetFollowHiperlink(ByValk Sh As object, ByVal Target As Hiperlink)
AppEvent_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
AppEvent_WindowActivate(Byval Workbook, ByVal Wn As Window)
AppEvent_WindowDeactivate(ByVal Workbook, ByVal Wn As Window)
AppEvent_WindowResize(ByVal Workbook, ByVal Wn As Window)
AppEvent_WorkbookActivate(ByVal Workbook)
Wb
Wb
Wb
Wb
As
As
As
As
AppEvent_WorkbookAddinInstall(ByVal Wb As Workbook)
AppEvent_WorkbookAddinUninstall(ByVal As Workbook)
Wb
AppEvent_WorkbookBeforeClose(ByVal Wb As Workbook, Cancel As Boolean)
Sh é a planilha ativa. Ocorre quando o valor de qualquer célula é alterado. Sh é a planilha Target é o intervalo alterado. Ocorre quando qualquer planilha de gráfico ou planilha em uma pasta de trabalho é desativada. Sh é a planilha que está sendo desativada. Ocorre quando qualquer hiperlink é clicado no Excel. Sh é a planilha ativa Target é o hiperlink. Ocorre quando um novo intervalo é selecionado em qualquer planilha. Sh é a planilha ativa. Target é o intervalo selecionado Ocorre quando qualquer janela de pasta de trabalho é ativada. Wb é a pasta de trabalho que está sendo desativada Wn é a janela. Ocorre quando qualquer janela de pasta de trabalho é desativada. Wb é a pasta de trabalho que está sendo desativada Wn é a janela Ocorre quando a pasta de trabalho ativa é redimensionada Wb é a pasta de trabalho ativa Wn é a janela Ocorre quando qualquer pasta de trabalho é ativada Wn é a janela Ocorre quando uma pasta de trabalho é instalada como um suplemento Wb é a pasta de trabalho que está sendo instalada Ocorre quando uma pasta de trabalho (suplemento) é desinstalada Wb é a pasta de trabalho que está sendo deinstalada Ocorre quando uma pasta de trabalho fecha.
Wb é a pasta de trabalho Cancel configurado como True impede que a pasta de trabalho seja fechada AppEvent_WorkbookBeforePrint(ByVal Wb As Ocorre quando qualquer comando Workbook, Cancel As Boolean) Imprimir é utilizado. Wb é a pasta de trabalho Cancel configurado como True impede que a pasta de trabalho seja impressa. O exemplo posiciona o nome de usuário no rodapé de cada página impressa: Private Sub AppEvent_WorkbookBeforePrint( ByVal Wb As Workbook, Cancel As Boolean)
AppEvent_WorkbookBeforeSave(Byval Wb As Workbook, ByVal SaveAsUI As Boolean, Cancel As Boolean)
AppEvent_WorkbookNewSheet(ByVal Workbook, ByVal Sh As Object)
AppEvent_WorkbookOpen(ByVal Workbook)
Wb
Wb
As
As
AppEvent_WorkbookPivotTableCloseConnection (ByVal Wb As Workbook, ByVal Target As PivotTable)
Wb.ActiveSheet.PageSetup.LeftFo oter = Application.UserName End Sub Ocorre quando a pasta de trabalho é salva. Wb é a pasta de trabalho SaveAsUI é configurado como True se a caixa de diálogo Salvar Como precisar ser exibida Cancel configurado como True impede que a pasta de trabalho seja salva. Ocorre quando uma nova planilha é adicionada à pasta de trabalho ativa Wb é a pasta de trabalho Sh é a nova planilha ou objeto de planilha de gráfico Ocorre quando uma pasta de trabalho é aberta Wb é a pata de trabalho que acabou de ser aberta. Ocorre quando um relatório de tabela dinâmica fecha sua conexão com a sua origem de dados. Wb é a pasta de trabalho contendo a tabela dinâmica que desencadeou o evento
AppEvent_WorkbookPivotTableOpenConnection (ByVal Wb As Workbook, ByVal Target As PivotTable)
AppEvent_WorkbookRowSetComplete(ByVal Wb As Workbook, ByVal Description As String, ByVal Sheet As String, ByVal Success As Boolean)
AppEvent_WorkbookSync(ByVal Wb As Workbook, ByVal SyncEventType As Office, MsoSyncEventType)
Target é a tabela dinâmica que fechou a conexão Ocorre quando um relatório de tabela dinâmica abre uma conexão com sua origem de dados. Wb é a pasta de trabalho contendo a tabela dinâmica que desencadeou o evento Target é a tabela dinâmica que abriu a conexão. Ocorre quando o usuário pesquisa um recordset ou chama à ação rowset em uma tabela dinâmica OLAP. Wb é a pasta de trabalho que desencadeou o evento Description é uma descrição do evento Sheet é o nome da planiliha em que o recordset é criado Success indica sucesso ou falha Ocorre quando a cópia local de uma planilha em uma pasta de trabalho que faz parte de um Espaço de trabalho de Documento é sincronizada com a cópia no servidor. Wb é a pata de trabalho que desencadeou o evento. SyncEventType é o status da sincronização.