Em geral, os eventos não são nada, mas acontecem de algo. É o mesmo no Excel. Mas às vezes queremos que algo aconteça automaticamente quando um determinado evento ocorre. Para fazer algo quando um evento específico acontece no Excel, usamos o Excel VBA event.
Manipuladores de eventos do Excel VBA: tipos
Existem principalmente 7 tipos de manipuladores de eventos no Excel VBA.
- Eventos de aplicativos
- Eventos de pasta de trabalho
- Eventos de planilha
- Eventos de gráfico
- Eventos de formulário de usuário
- Eventos de combinação de teclas (eventos de teclas de atalho)
- Eventos pontuais
Vamos explorá-los um por um.
Eventos de aplicativos no Excel
Os eventos no nível do aplicativo são acionados quando o aplicativo (Excel) é fechado, aberto, ativado, protegido, desprotegido, etc.
Existem mais de 50 tipos de eventos no nível do aplicativo. Portanto, não podemos discutir todos eles aqui.
Escopo do evento de inscrição:
Esses eventos funcionarão em todas as pastas de trabalho do Excel, desde que o código que contém a pasta de trabalho esteja aberto. Por exemplo, se você criou um evento no nível do aplicativo para informar o nome da planilha da planilha ativa, ele será disparado em cada ativação de planilha de qualquer pasta de trabalho.
Como criar um manipulador de eventos de aplicativo no VBA?
A criação do evento de aplicativo é um pouco complicada. Eu expliquei aqui em detalhes com um exemplo.
Eventos de pasta de trabalho no Excel
Âmbito do evento de pasta de trabalho
Os eventos da pasta de trabalho funcionam em toda a pasta de trabalho que contém o código. O evento pode abrir, fechar, ativar, desativar a pasta de trabalho, alterar a planilha, etc.
Onde escrever eventos de pasta de trabalho?
Os eventos da pasta de trabalho são gravados no objeto da pasta de trabalho.
Como escrever um evento de pasta de trabalho?
Siga esses passos:
1. No explorador de projetos, clique duas vezes no objeto da pasta de trabalho. A área de escrita do código será exibida. Todos os eventos com escopo de pasta de trabalho são escritos aqui.
2. No canto superior esquerdo da área de escrita do código, você verá um menu suspenso. Clique no menu suspenso e escolha a pasta de trabalho. Por padrão, é geral.
3. Depois de escolher a pasta de trabalho no menu suspenso à esquerda, ela, por padrão, inserirá uma sub-rotina de evento workbook_open. Mas se você quiser usar uma sub-rotina de evento diferente, escolha-a no menu suspenso superior direito. Ele listará todos os eventos de pasta de trabalho disponíveis.
4. Escolha o evento que você precisa. Por causa do exemplo, eu escolho o evento SheetActivate. Este evento é disparado em cada seleção da planilha no código que contém a pasta de trabalho.
Exemplo de evento de pasta de trabalho:Este é um exemplo simples. Só quero mostrar o nome da planilha que está ativada. Para isso, simplesmente uso o evento SheetActivate no objeto Workbook.
Sub Privado Workbook_SheetActivate (ByVal Sh As Object) MsgBox Sh.Name & "Activated" End Sub
Agora, sempre que uma nova planilha nesta pasta de trabalho for ativada, este evento será disparado. A massagem será exibida, com o nome da folha ativado.
Eu sei que este código não é tão útil, mas você pode colocar qualquer conjunto de instruções entre essas linhas. Você pode chamar as funções e sub-rotinas dos próprios módulos.
Eventos de planilha no Excel
Todos os eventos de alcance e de célula-alvo são escritos nos eventos da planilha. Você pode ler sobre os eventos da planilha aqui.
O escopo do evento de planilha
Os eventos da planilha são direcionados aos intervalos e células de uma planilha específica. Um evento de planilha será disparado em eventos que acontecem na planilha específica (a planilha que contém o código).
Onde os eventos da planilha são escritos?
Os eventos da planilha são gravados no objeto da planilha.
Como escrever um código de manipulação de eventos de planilha?
É o mesmo que os eventos da pasta de trabalho.
1. No explorador de projetos, clique duas vezes no objeto de planilha. A área de escrita do código será exibida para a planilha. Todos os eventos do escopo da planilha são escritos nessas planilhas.
2. No canto superior esquerdo da área de escrita do código, você verá um menu suspenso. Clique no menu suspenso e escolha a planilha. Por padrão, é geral.
3. Depois de escolher a planilha no menu suspenso à esquerda, ela irá, por padrão, inserir uma sub-rotina de evento worksheet_selectionChange. Mas se você quiser usar uma sub-rotina de evento diferente, escolha-a no menu suspenso superior direito. Ele listará todos os eventos de planilha disponíveis.
4. Escolha o evento que você precisa. Por causa do exemplo, eu escolho o evento Worksheet_SelectionChange (ByVal Target As Range). Este evento é disparado a cada alteração da seleção de um intervalo na planilha.
Exemplo de planilha de evento
Private Sub Worksheet_SelectionChange (ByVal Target As Range) MsgBox "Você está em" & Target.Address End Sub
O evento acima está escrito na folha 1 de uma pasta de trabalho. Este evento mostrará o endereço do intervalo, que você selecionou na planilha que contém o código, sempre que você alterar a seleção do intervalo. Abaixo estão mais alguns exemplos de eventos de planilha.
Os eventos de planilha são usados principalmente em painéis dinâmicos. Você pode usar células como caixas de seleção ou seleções ativas para tornar seus painéis dinâmicos.
Abaixo estão mais alguns exemplos de eventos de planilha.
Usando o evento de alteração da planilha para executar a macro quando qualquer alteração é feita
Executar macro se houver alguma alteração feita na folha no intervalo especificado
Código VBA mais simples para destacar a linha e a coluna atuais usando
Os eventos do gráfico
Existem dois tipos de eventos de gráfico no Excel. Um são os gráficos normalmente incorporados que discutimos aqui em detalhes. É muito parecido com eventos no nível do aplicativo.
Outra é a folha de gráfico. Estas são as planilhas especiais que contêm apenas os gráficos conectados aos dados em algumas outras planilhas.
Quando se trata de eventos, eles são muito parecidos com lençóis normais.
Onde escrever eventos gráficos?
Os eventos do gráfico são gravados no objeto do gráfico. Basta clicar duas vezes na planilha do gráfico para abrir a área de código.
Como escrever eventos de gráfico?
Siga esses passos:
1. No explorador de projetos, clique duas vezes no objeto da planilha de gráfico para abrir a área de código. Todos os eventos específicos relacionados à planilha de gráfico são escritos aqui.
2. No canto superior direito da área de código, você verá o menu suspenso de costume. Selecione o gráfico nessa lista suspensa.
3. No canto direito, selecione o evento desejado.
Por exemplo, se eu quiser fazer algo assim que o usuário selecionar o gráfico, usarei o evento Chart_Activate.
Exemplo: Evento de Folha de Gráfico
Private Sub Chart_Activate () MsgBox "O gráfico está atualizado" End Sub
O trecho de código acima será acionado assim que você selecionar a planilha de gráfico. Aqui, ele apenas mostrará a mensagem de que o gráfico foi atualizado, mas você pode fazer muito. Como você pode selecionar dinamicamente o intervalo de dados para o gráfico antes de mostrar esta mensagem.
Abaixo estão mais alguns exemplos de eventos de gráfico:
Os eventos do UserForm
O evento do formulário do usuário é como outros eventos. Vários eventos ocorrem no formulário do usuário. Você pode usar esses eventos para disparar os eventos.
Onde escrever os eventos do formulário do usuário?
Para escrever um evento de formulário de usuário, primeiro você precisa inserir um formulário de usuário.
1. Em seguida, clique com o botão direito do mouse no formulário de usuário e clique no código de visualização. Agora a área de código será aberta.
2. Agora, no menu suspenso superior esquerdo, selecione o formulário do usuário.
3. No menu suspenso à esquerda, selecione o evento que deseja usar para acionar a execução do código.
4. Escreva o código que você deseja entre o código de evento do código.
O exemplo abaixo simplesmente mostra a mensagem quando um formulário do usuário é ativado.
Private Sub UserForm_Activate () MsgBox "Olá, por favor, verifique suas informações." End Sub
O código acima mostra apenas uma mensagem, mas você pode usar este evento para preencher previamente o formulário com algumas entradas padrão ou usar as informações da planilha para preenchê-lo.
O evento Onkey
Esses eventos são disparados quando uma tecla ou combinação de teclas especificada é pressionada. É como criar o seu em atalhos.
O evento OnKey é na verdade uma função ou método da classe Application que possui dois argumentos, conforme mostrado abaixo:
Application.onkey Chave, ["procedimento"]
o chave é a tecla ou combinação de teclas que você deseja usar como gatilho.
"Procedimento" é um argumento opcional que é um nome de string do procedimento ou macro que você deseja disparar. Se você não definir o procedimento, ele irá disparar o procedimento atual.
Onde escrever os eventos Onkey?
Bem, você pode escrever o evento Onkey em qualquer módulo normal. Eles funcionarão em módulos normais, mas primeiro, você precisará executar aquela sub-rotina que contém as instruções Onkey. Não é como se você executasse a macro todas as vezes para usar os eventos Onkey. Apenas uma vez, você precisará executar essa macro ao abrir a pasta de trabalho.
Se você não quiser executar a macro que contém os eventos Onkey, poderá colocá-los no evento workbook_open () no objeto pasta de trabalho. Isso tornará os eventos Onkey ativos assim que você abrir a pasta de trabalho que contém os eventos Onkey.
Como escrever um manipulador de eventos Onkey?
Portanto, se você já possui algumas macros que deseja executar com um atalho especificado, escreva um novo procedimento que conterá a lista de atalhos. Por exemplo, aqui eu tenho uma macro que mostra a mensagem de que o atalho está funcionando.
Sub show_msg () MsgBox "O atalho está funcionando" End Sub
Agora, quero executar essa macro enquanto pressiono a combinação de teclas CTRL + j. Para fazer isso, escrevo o código VBA abaixo.
Sub Activate_Onkey () Application.OnKey "j", "show_msg" End Sub
"^" (carate) é para a tecla CTRL. Abaixo está a tabela para todas as abreviações-chave no Excel VBA.
https://docs.microsoft.com/en-us/office/vba/api/excel.application.onkey
Como ativar o evento Onkey?
Depois de escrever o código acima em um módulo, se você for na visualização do Excel e usar a tecla CTRL + J, ele não funcionará. Primeiro, você precisa executar o sub que define os eventos OnKey. Portanto, execute uma vez o sub Activate_Onkey () e ele funcionará para toda a sessão. Depois de fechar a pasta de trabalho que contém as definições Onkey, ela irá parar de funcionar.
Você pode colocar as definições Onkey dentro do procedimento que deseja que aconteça. Mas então você terá que executar a macro uma vez manualmente. É por isso que sugiro colocar os eventos Onkey nos eventos Workbook_Open. Isso fará com que todos os eventos Onkey sejam ativados automaticamente.
O evento Ontime no Excel
Como o nome sugere, o evento Onkey dispara a sub-rotina especificada em ou após o primeiro tempo especificado possível. O Excel pode estar ocupado em outras tarefas, como executar o conjunto de instruções ou estar no modo de cópia anterior. Nesse caso, pode atrasar o evento Ontime. É por isso que o argumento é mostrado como o tempo mais antigo.
Sintaxe do evento OnTime
O evento Ontime é uma função da classe Application. Possui dois argumentos essenciais e dois argumentos opcionais.
Application.Ontime EarliestTime, "Procedure", [LatestTime], [Schedule]
oEarliestTimeé o momento em que você deseja que seu procedimento seja executado. Mas o Excel executará a macro especificada após o primeiro tempo definido, apenas quando estiver livre.
o "Procedimento" é o nome do procedimento que você deseja executar no horário especificado.
Como eu disse, não há garantia de que o Excel executará sua procedure no horário especificado. o LastestTimeé o tempo após o primeiro tempo para dar ao Excel uma janela para liberar e executar sua tarefa.
Se você deseja desativar seu evento OnTime programado, definacronograma para falso.
Onde escrever o evento Ontime?
O evento OnTime pode ser escrito em qualquer módulo. Você terá que executar o evento que contém o procedimento para ativar o evento.
Se você deseja que seu evento seja ativado assim que você abrir a pasta de trabalho que contém o evento, coloque-o no evento workbook_open. Ele ativará o evento assim que você abrir o código que contém o evento no excel.
Como escrever o evento Ontime?
Digamos que você tenha uma sub-rotina que mostra a data e hora atuais
Sub show_msg () MsgBox "A data e hora atuais são" & Now End Sub
Agora, se você deseja que este procedimento seja executado após 5 segundos da execução de outra macro, você precisará inserir este código.
Sub OnTimeTest () '- algumas outras tarefas Application.ontime Now + (5/24/60/60), "show_msg" End Sub
Depois de executar a sub-rotina OnTimeTest, após cinco segundos de sua execução, ela irá disparar a sub-rotina show_msg. Portanto, será bom se você quiser fazer algo depois de algumas vezes fazer outra coisa, use a estrutura acima.
Se você quiser que sua macro execute a cada poucos segundos / minutos / horas / etc, você pode chamar essa função. Seria uma espécie de sub-rotina recursiva.
Sub OnTimeTest () MsgBox "A data e hora atuais são" & Now Application.ontime Now + (5/24/60/60), "OnTimeTest" End Sub
A sub-rotina acima será executada a cada cinco segundos, assim que você iniciá-la.
Então, sim pessoal, esses são os eventos no Excel VBA. Algumas das categorias acima têm uma grande variedade de gatilhos de eventos. Claro, não posso explicar todos eles aqui. Isso tornará um artigo longo do livro. Esta foi apenas uma introdução aos eventos disponíveis no Excel VBA. Para obter mais informações, siga os links incorporados ao longo dos artigos. Mencionei alguns artigos relacionados abaixo. Você também pode lê-los.
Se você tiver alguma dúvida relacionada a este artigo ou qualquer outro pensamento em excel / VBA, pergunte-nos na seção de comentários abaixo.
Os eventos de planilha no Excel VBASubmeter comentários Causa Os eventos de planilha são realmente úteis quando você deseja que suas macros sejam executadas quando um evento especificado ocorrer na planilha.
Eventos de pasta de trabalho usando VBA no Microsoft Excel | Os eventos da pasta de trabalho funcionam em toda a pasta de trabalho. Como todas as planilhas fazem parte da pasta de trabalho, esses eventos também funcionam nelas.
Impedir que uma automacro / eventmacro seja executada usando VBA no Microsoft Excel | Para evitar a execução da macro auto_open, use a tecla shift.
Eventos de objeto de gráfico usando VBA no Microsoft Excel | Os gráficos são objetos complexos e há vários componentes que você anexa a eles. Para fazer os Eventos do Gráfico usamos o módulo Class.
Artigos populares:
50 atalhos do Excel para aumentar sua produtividade | Torne sua tarefa mais rápida. Esses 50 atalhos farão você trabalhar 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.