Como usar eventos ontime e eventos keypress em excel 2016 vba

Existem dois tipos de eventos que você pode usar na programação VBA para Excel 2016 que não estão associadas a objetos: tempo e teclas pressionadas. Porque o tempo e teclas pressionadas não estão associadas a um determinado objeto, como um livro ou uma planilha, você programar esses eventos em um módulo normal de VBA.

O evento OnTime

O evento OnTime ocorre quando um determinado momento do dia ocorre. O exemplo a seguir demonstra como obter o Excel para executar um procedimento quando o evento 15:00 ocorre. Neste caso, uma voz de robô diz-lhe para acordar, acompanhado por uma caixa de mensagem:

Sub setAlarm () Application.OnTime 0,625 “DisplayAlarm” End subsub DisplayAlarm () Application.Speech.Speak ( “Hey, acorde”) MsgBox “É tempo para a sua pausa à tarde!” End Sub

Neste exemplo, o método OnTime do objecto de aplicação é usado. Este método leva dois argumentos: o tempo (0,625 ou 15:00) e o nome do procedimento Sub para executar quando o evento de tempo ocorre (DisplayAlarm).

Video: EXCEL VBA USANDO KEYDOWN PARA QUEBRA DE LINHA EM TEXTBOX

Este procedimento é bastante útil se você tende a ficar tão envolvido em seu trabalho que você esqueça sobre reuniões e compromissos. Basta definir um evento OnTime para se lembrar.

A maioria das pessoas acham difícil pensar no tempo em termos do sistema de numeração Excel. Portanto, você pode querer usar a função VBA TimeValue para representar o tempo. TimeValue converte uma string que se parece com um tempo em um valor que Excel pode manipular. A declaração a seguir mostra uma maneira mais fácil de programar um evento para 3 p.m .:

Application.OnTime TimeValue ( “03:00:00”), “DisplayAlarm”

Se você quiser agendar um evento em relação ao horário atual (por exemplo, 20 minutos a partir de agora), você pode usar uma declaração como esta:

Application.OnTime Agora + TimeValue ( “00:20:00”), “DisplayAlarm”

Você também pode usar o método OnTime para executar um procedimento VBA em um determinado dia. Você deve se certificar de que o computador continua funcionando e que a pasta de trabalho com o procedimento é mantida aberta. A seguinte declaração executa o procedimento DisplayAlarm em 5:00 em 31 de dezembro de 2016:

Application.OnTime DateValue ( “2016/12/31 17:00”), “DisplayAlarm”

Esta linha de código em particular poderia vir a calhar para avisá-lo de que você precisa para ir para casa e se preparar para as festividades da véspera de Ano Novo.

Aqui está outro exemplo que usa o evento OnTime. Executar os procedimentos UpdateClock escreve o tempo para a célula A1 programas e também um outro evento de cinco segundos mais tarde. Este evento executa novamente o procedimento UpdateClock. O efeito líquido é que a célula A1 é atualizado com a hora atual a cada cinco segundos. Para parar os eventos, executar o procedimento StopClock (que cancela o evento). Note-se que NextTick é uma variável de nível de módulo que armazena o tempo para o próximo evento.

Dim NextTick Como DateSub UpdateClock () `A1 celular Atualizações com as timeThisWorkbook.Sheets atuais (1) .Range ( ‘A1’) = Tempo` Configure o próximo evento de cinco segundos a partir nowNextTick = Now + TimeValue ( “00:00:05 “) Application.OnTime NextTick,‘UpdateClock’End subsub StopClock ()` cancela o evento OnTime (pára o relógio) On Error Resume NextApplication.OnTime NextTick,‘UpdateClock’, FalseEnd Sub

O evento OnTime persiste mesmo depois de o livro está fechado. Em outras palavras, se você fechar o livro sem executar o procedimento StopClock, o livro vai reabrir-se em cinco segundos (assumindo que o Excel ainda está em execução). Para evitar isso, use um procedimento de evento Workbook_BeforeClose que contém a seguinte declaração:

Video: Datas sem digitar barras



Chamada StopClock

O método OnTime tem dois argumentos adicionais. Se você pretende usar esse método, você deve consultar o sistema de Ajuda para detalhes completos.

Se você gostaria de ver uma aplicação bastante complicada, confira este aplicativo 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 divertida.

Uma aplicação analógica-relógio.

Video: Evento KeyDown y captura de tecla accionada VB.NET

Uma aplicação analógica-relógio.

eventos de teclas

Enquanto você trabalha, Excel monitora constantemente o que você digita. Devido a isso, você pode definir as coisas de modo uma combinação de teclas ou uma combinação de teclas executa um procedimento.

Aqui está um exemplo que atribui novamente as teclas PgDn e PgUp:

Sub Application.OnKey Setup_OnKey () “{PgDn}”, “PgDn_Sub” Application.OnKey “{PgUp}”, “PgUp_Sub” End subsub PgDn_Sub () On Error Resume NextActiveCell.Offset (1, 0) .ActivateEnd subsub PgUp_Sub () on Error Resume NextActiveCell.Offset (-1, 0) .ActivateEnd Sub

Depois de configurar os eventos OnKey por executar o procedimento Setup_OnKey, pressionando PgDn move para baixo uma linha. Pressionando PgUp move-se uma linha.

Video: CURSO VBA BASICO AULA 02 EVENTOS

Observe que os códigos de chaves são colocadas entre chaves, não entre parênteses. Para obter uma lista completa de códigos de teclado, consulte o sistema de ajuda. Procurar por OnKey.

Neste exemplo, On Error Resume Seguinte é usada para ignorar quaisquer erros que são gerados. Por exemplo, se a célula ativa está na primeira fila, tentando mover-se uma linha faz com que um erro que pode ser ignorado. E se uma folha de gráfico é activo, não há nenhuma célula activa.

Ao executar a seguinte rotina, você cancelar os eventos OnKey:

Cancel_OnKey () Application.OnKey Sub “{PgDn}” Application.OnKey “{PgUp}” End Sub

Usando uma seqüência vazia como o segundo argumento para o método OnKey faz não cancelar o evento OnKey. Em vez disso, ele faz com que o Excel para simplesmente ignorar o toque de tecla. Por exemplo, a seguinte declaração informa ao Excel para ignorar Alt + F4. O sinal de porcentagem representa a tecla Alt:

 Application.OnKey “% {F4}”, “”

Embora você possa usar o método OnKey para atribuir uma tecla de atalho para executar uma macro, você deve usar a caixa de diálogo Opções de macro para esta tarefa.

Se você fechar o livro que contém o código e deixar Excel aberto, o método OnKey não serão reiniciadas. Como consequência, pressionando a tecla de atalho irá causar Excel para abrir o arquivo automaticamente com a macro. Para evitar que isso aconteça, você deve incluir código em seu código de evento Workbook_BeforeClose para redefinir o evento OnKey.


Publicações relacionadas