Índice:
- O evento OnTime
- Enquanto você trabalha, o Excel monitora constantemente o que você digita. Por isso, você pode configurar as coisas de forma que um toque de tecla ou uma combinação de teclas executem um procedimento.
Vídeo: Curso Excel VBA y Macros - Cap. 40 - Eventos de Aplicación y módulos de clase 2025
Existem dois tipos de eventos que você pode usar na programação VBA para o Excel 2016 que não estão associados a objetos: tempo e teclas pressionadas. Como o tempo e as teclas não estão associadas a um objeto específico, como uma pasta de trabalho ou uma planilha, você programa esses eventos em um módulo VBA normal.
O evento OnTime
O evento OnTime ocorre quando ocorre uma determinada hora do dia. O exemplo a seguir demonstra como obter o Excel para executar um procedimento quando o 3 p. m. ocorre o evento. Neste caso, uma voz de robô diz para você acordar, acompanhado de uma caixa de mensagem:
Aplicação Sub SetAlarm (). OnTime 0. 625, "DisplayAlarm" End Sub Sub DisplayAlarm () Aplicação. Discurso. Fale ("Ei, acorde") MsgBox "É hora de sua pausa na tarde! "End Sub
Neste exemplo, o método OnTime do objeto Aplicação é usado. Este método leva dois argumentos: o tempo (0.625 ou 3: 00 p. M.) E o nome do procedimento Sub para executar quando ocorre o evento de tempo (DisplayAlarm).
Este procedimento é bastante útil se você tende a ficar tão envolvido no seu trabalho que você esquece reuniões e compromissos. Basta configurar um evento OnTime para lembrar-se.
A maioria das pessoas tem dificuldade de pensar em tempo em termos do sistema de numeração do Excel. Portanto, você pode usar a função VBA TimeValue para representar o tempo. TimeValue converte uma string que parece uma hora em um valor que o Excel pode manipular. A seguinte declaração mostra uma maneira mais fácil de programar um evento para 3 p. m.:
Aplicação. OnTime TimeValue ("3: 00: 00 pm"), "DisplayAlarm"
Se você deseja agendar um evento relativo à hora atual (por exemplo, 20 minutos a partir de agora), você pode usar uma declaração como esta: < Aplicação. OnTime Now + TimeValue ("00: 20: 00"), "DisplayAlarm"
Você também pode usar o método OnTime para executar um procedimento VBA em um dia específico. Você deve garantir que seu computador continue funcionando e que a pasta de trabalho com o procedimento seja mantida aberta. A seguinte declaração executa o procedimento DisplayAlarm em 5 p. m. em 31 de dezembro de 2016:
Aplicação. OnTime DateValue ("31/12/2016 5: 00 pm"), "DisplayAlarm"
Esta linha de código particular pode ser útil para avisar que você precisa ir para casa e se preparar para as festas de Ano Novo.
Aqui está outro exemplo que usa o evento OnTime. Executar os procedimentos do UpdateClock escreve o tempo para a célula A1 e também programa outro evento cinco segundos depois.Esse evento retorna o procedimento UpdateClock. O efeito líquido é que a célula A1 é atualizada com a hora atual a cada cinco segundos. Para parar os eventos, execute o procedimento StopClock (que cancela o evento). Note que NextTick é uma variável de nível de módulo que armazena o tempo para o próximo evento.
Dim NextTick As Data Sub UpdateClock () 'Atualiza a célula A1 com a hora atual ThisWorkbook. Folhas (1). Range ("A1") = Time 'Configure o próximo evento cinco segundos a partir de agora NextTick = Now + TimeValue ("00: 00: 05") Aplicação. OnTime NextTick, "UpdateClock" End Sub Sub StopClock () 'Cancela o evento OnTime (pára o relógio) No resumo do erro na próxima aplicação. OnTime NextTick, "UpdateClock", False End Sub
O evento OnTime persiste mesmo depois que o livro está fechado. Em outras palavras, se você fechar a pasta de trabalho sem executar o procedimento StopClock, a pasta de trabalho será reaberta em cinco segundos (assumindo que o Excel ainda está sendo executado). Para evitar isso, use um procedimento de evento Workbook_BeforeClose que contenha a seguinte declaração:
Call StopClock
O método OnTime tem dois argumentos adicionais. Se você planeja usar esse método, você deve consultar o sistema de Ajuda para detalhes completos.
Se você quiser ver um aplicativo bastante complicado, confira este aplicativo de relógio analógico. O relógio é realmente um gráfico e o gráfico é atualizado a cada segundo para exibir a hora do dia. Inútil, mas divertido.
Um aplicativo de relógio analógico.
Enquanto você trabalha, o Excel monitora constantemente o que você digita. Por isso, você pode configurar as coisas de forma que um toque de tecla ou uma combinação de teclas executem um procedimento.
Aqui está um exemplo que reasigna as chaves PgDn e PgUp:
Sub Setup_OnKey () Application. OnKey "{PgDn}", "PgDn_Sub" Aplicação. OnKey "{PgUp}", "PgUp_Sub" End Sub Sub PgDn_Sub () On Error Resume Next ActiveCell. Offset (1, 0). Ativar End Sub Sub PgUp_Sub () On Error Resume Next ActiveCell. Offset (-1, 0). Ativar End Sub
Depois de configurar os eventos OnKey executando o procedimento Setup_OnKey, pressionar PgDn move-se para baixo uma linha. Pressionar o PgUp move-se até uma linha.
Observe que os códigos-chave estão incluídos nas chaves, não entre parênteses. Para obter uma lista completa de códigos de teclado, consulte o sistema de Ajuda. Procure por
OnKey. Neste exemplo, On Error Resume Next é usado para ignorar quaisquer erros que são gerados. Por exemplo, se a célula ativa estiver na primeira linha, tentar subir de uma linha causa um erro que pode ser ignorado com segurança. E se uma folha de gráfico estiver ativa, não há célula ativa.
Ao executar a seguinte rotina, você cancela os eventos OnKey:
Sub Cancel_OnKey () Application. Aplicação OnKey "{PgDn}". OnKey "{PgUp}" End Sub
Usando uma seqüência vazia como o segundo argumento para o método OnKey
not cancelar o evento OnKey. Em vez disso, ele faz com que o Excel simplesmente ignore o pressionamento de tecla. Por exemplo, a seguinte declaração diz ao Excel que ignore Alt + F4. O sinal de porcentagem representa a tecla Alt: Aplicação.OnKey "% {F4}", ""
Embora você possa usar o método OnKey para atribuir uma tecla de atalho para a execução de uma macro, você deve usar a caixa de diálogo Opções de macro para esta tarefa.
Se você fechar a pasta de trabalho que contém o código e deixar o Excel aberto, o método OnKey não será redefinido. Como conseqüência, ao pressionar a tecla de atalho, o Excel abrirá automaticamente o arquivo com a macro. Para evitar que isso aconteça, você deve incluir o código no seu código do evento Workbook_BeforeClose para redefinir o evento OnKey.
