Como usar eventos de pasta de trabalho no VBA

Índice:

Anonim

Você pode querer executar seu fragmento de macro / VBA quando uma pasta de trabalho específica for selecionada, uma planilha na pasta de trabalho for selecionada, a célula alterar seu valor, quando um clique duplo acontecer, quando uma planilha for adicionada, etc. Em todos esses casos, usamos Manipulador de eventos da pasta de trabalho. O Event Handler nos ajuda a executar o código VBA sempre que um determinado evento ocorre.

Neste artigo, aprenderemos brevemente sobre cada Workbook Event Handler.

O que é um Workbook Event Handler?

Um manipulador de eventos de pasta de trabalho é uma sub-rotina local para uma pasta de trabalho. Esse código funciona apenas nos componentes de uma pasta de trabalho. Essa é a própria pasta de trabalho, suas planilhas e intervalos.

Onde escrever o código do manipulador de eventos da pasta de trabalho?

Os eventos de pasta de trabalho são gravados apenas no objeto de pasta de trabalho. Se você escrever um evento de pasta de trabalho em algum módulo normal, não haverá erro, mas eles simplesmente não funcionarão.

Para escrever no objeto de pasta de trabalho. Clique duas vezes nele ou clique com o botão direito e clique no código de visualização. A área de escrita do código será mostrada.

Como escrever código para um evento específico na pasta de trabalho?

Agora, quando você estiver no modo de edição, no menu suspenso do canto superior esquerdo, você verá o geral. Clique no menu suspenso e selecione a pasta de trabalho. No menu suspenso do canto superior direito, todos os eventos serão exibidos. Escolha o que você precisa e um código básico para esse evento será escrito para você.

Cada evento possui um nome de procedimento fixo. Esses são os nomes de sub-rotina reservados que começam com workbook_. Você não pode usá-los para outras sub-rotinas
(você pode, mas serão sub-rotinas normais).

Importante: Cada sub-rotina dessa lista será executada no evento especificado.

Um tipo de procedimento de evento de pasta de trabalho pode ser escrito apenas uma vez em uma pasta de trabalho. Se você escrever dois mesmos procedimentos de tratamento de eventos em uma pasta de trabalho, isso resultará em um erro e nenhum deles será executado. Claro, o erro será sub-rotinas ambíguas.

Vamos aprender um pouco sobre cada um dos eventos.
1. o Workbook_SheetChange (ByVal Sh As Object, ByVal Target As Range) Evento

Este evento é acionado quando fazemos qualquer alteração nas planilhas contidas (formatação excluída). Se você quiser fazer alguma coisa, se houver alguma alteração feita em qualquer planilha, o código será:

 Private Sub Workbook_SheetChange (ByVal Sh As Object, ByVal Target As Range) 'do something Msgbox "done something" End Sub 

O "Sh" é sempre a página ativa. O "Alvo" é sempre a célula ativa.

Outro exemplo: Você pode colocar a data e a hora em Cel, prl B1 se A1 mudar. Nesse caso, usamos o evento workbook_sheetchange. O código ficaria assim:

 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 

Isso terá como alvo apenas a célula A1 em cada planilha, pois não especificamos o objeto "sh".

2. o Workbook_Activate () Evento

Este evento é disparado quando o código do evento que contém a pasta de trabalho é ativado. O código do esqueleto para este evento é:

 Private Sub Workbook_Activate () End Sub

Um exemplo simples é mostrar o nome da pasta de trabalho quando ela é selecionada.

 Private Sub Workbook_Activate () MsgBox "Você está no workbook" & Activeworkbook.Name End Sub 

Assim que você chegar na pasta de trabalho que contém esse código, o evento será executado e será exibida uma mensagem de que "Você está no nome da pasta de trabalho" (no meu caso, planilha2).
3. o Workbook_Open () Evento

Esta é uma das perguntas mais frequentes sobre como executar uma macro assim que a pasta de trabalho é aberta. Esta é a resposta. Este evento de pasta de trabalho é executado assim que a pasta de trabalho é aberta. Ao contrário de Workbook_Activate (), este código é executado apenas uma vez, não sempre que é ativado.

Private Sub Workbook_Open () 'seu código' End Sub 

O exemplo de evento Workbook_Open abaixo simplesmente exibirá uma mensagem de boas-vindas quando você abrir o código que contém a pasta de trabalho.

 Private Sub Workbook_Open () MsgBox "Bem-vindo ao arquivo mestre" End Sub

4. o Workbook_Deactivate () Evento

Este evento é disparado ao sair do código que contém a pasta de trabalho. Em outras palavras, se você quiser fazer algo, como ocultar planilhas ou qualquer coisa ao trocar de pasta de trabalho, use este evento VBA. A sintaxe é:

 Private Sub Workbook_Deactivate () 'seu código' End Sub 

O exemplo de evento Workbook_Deativate abaixo simplesmente exibirá uma mensagem pop-up de que você saiu da planilha mestre, quando você sairá desta planilha.

 Private Sub Workbook_Deactivate () MsgBox "Você saiu da planilha mestre" End Sub 

5. o Workbook_BeforeClose () Evento

Este evento é acionado quando você confirma a exclusão da planilha contendo o evento VBA. A sintaxe é simples:

 Private Sub Workbook_BeforeClose (Cancelar como Booleano) End Sub 

O Cancelar pode ser definido como verdadeiro se você quiser manter a pasta de trabalho aberta.
O código a seguir perguntará se você deseja salvar o conteúdo da pasta de trabalho prestes a ser fechada.

 Private Sub Workbook_BeforeClose (Cancelar como Booleano) ans = MsgBox ("Deseja salvar o conteúdo deste workbook?", VbYesNo) If ans = True Then thisworkbook.save End If End Sub 

6. o Workbook_BeforeSave (ByVal SaveAsUI As Boolean, Cancel As Boolean) Evento

Este evento é disparado antes de a pasta de trabalho ser salva. A sintaxe é simples:

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

SaveAsUI é definido como True se houver uma alteração na pasta de trabalho (não no VBA).

O Cancelar pode ser definido como verdadeiro se você quiser manter a pasta de trabalho não salva.

O código a seguir perguntará se você deseja salvar o conteúdo da pasta de trabalho prestes a salvar.

 Private Sub Workbook_BeforeSave (ByVal SaveAsUI As Boolean, Cancel as Boolean) ans = MsgBox ("Você realmente deseja salvar o conteúdo deste workbook?", VbYesNo) If ans = False Then Cancel = True End If End Sub 

7. o Workbook_BeforeSave (ByVal SaveAsUI As Boolean, Cancel As Boolean) Evento

Este evento é disparado antes de a pasta de trabalho ser salva. A sintaxe é simples:

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

SaveAsUI é definido como True se houver uma alteração na pasta de trabalho (não no VBA).

O Cancelar pode ser definido como verdadeiro se você quiser manter a pasta de trabalho não salva.

O código a seguir perguntará se você deseja salvar o conteúdo da pasta de trabalho prestes a salvar.

 Private Sub Workbook_BeforeSave (ByVal SaveAsUI As Boolean, Cancel as Boolean) ans = MsgBox ("Você realmente deseja salvar o conteúdo deste workbook?", VbYesNo) If ans = False Then Cancel = True End If End Sub 

8. o Workbook_NewSheet (ByVal Sh As Object) Evento

Este evento é disparado quando você adiciona uma nova planilha à pasta de trabalho. A sintaxe é simples:

 Private Sub Workbook_NewSheet (ByVal Sh As Object) End Sub 

O Sh é o objeto da pasta. O tipo é, na verdade, um objeto central, de modo que, se adicionarmos uma folha de gráfico, uma folha de macro ou uma folha de diálogo, o evento ainda funcionará.

O código a seguir adicionará e mostrará o nome da planilha que foi adicionada recentemente.

 Private Sub Workbook_NewSheet (ByVal Sh As Object) MsgBox "Você adicionou uma nova planilha." & Sh.Name End Sub 

Existem muitos outros eventos do objeto pasta de trabalho. Não podemos discuti-los todos aqui. Se você quiser saber sobre algum evento específico, pergunte na seção de comentários abaixo. Espero ter conseguido explicar os fundamentos dos eventos da pasta de trabalho neste artigo. Deixe-me saber se ajudou você na seção de comentários abaixo.
Artigos relacionados:

Usando o evento de alteração da planilha para executar a macro quando qualquer alteração é feita | Portanto, para executar sua macro sempre que a planilha for atualizada, usamos os Eventos de Planilha do VBA.

Executar macro se houver alguma alteração feita na folha no intervalo especificado | Para executar seu código de macro quando o valor em um intervalo especificado for alterado, use este código VBA. Ele detecta qualquer alteração feita no intervalo especificado e acionará o evento.

Código VBA mais simples para destacar a linha e a coluna atuais usando | Use este pequeno trecho de VBA para destacar a linha e coluna atuais da planilha.

Artigos populares:

50 atalhos do Excel para aumentar sua produtividade | Torne sua tarefa mais rápida. Esses 50 atalhos tornarão seu trabalho ainda mais rápido no Excel.

A função VLOOKUP no Excel | Esta é uma das funções mais usadas e populares do Excel, que é usada para pesquisar valores em diferentes intervalos e planilhas.

CONT.SE no Excel 2016 | Conte valores com condições usando esta função incrível. Você não precisa filtrar seus dados para contar um valor específico. A função Countif é essencial para preparar seu painel.

Como usar a função SUMIF no Excel | Esta é outra função essencial do painel. Isso ajuda você a somar valores em condições específicas.