Aula rápida de VBA que vai ajudar muita gente: ciclos de tempo em VBA.
Vamos ver como fazer uma macro executar por tempo determinado após ser executada, e, como executar a macro automaticamente a cada X tempo.
Para essas e outras dicas de VBA não deixe de conferir nosso curso gratuito de Visual Basic Application
Executando por tempo determinado
Esse código foi utilizado, por exemplo, na nossa aula de como criar uma tela de boas-vindas. No exemplo configuramos para que a tela ficasse visível por 2 segundos e depois fechasse. Ou seja, em termos de código estamos dizendo para o Excel executar algum código por X tempo e depois matar o processo.
O código é muito simples, confira:
Application.OnTime Now + TimeValue("00:00:02"), "FechaForm"
Note que o TimeValue funciona da seguinte forma: "hora: minutos: segundos". Portando se você quiser executar por 1 minuto é só configurar para ("00:01:00"). Fácil, certo?
Veja que para tudo funcionar corretamente o seu código deverá possuir obrigatoriamente o módulo FechaForm. Se você não sabe como criar um módulo confira aqui. O código a ser inserido noeste módulo é
Sub FechaForm()
unload UserForm1
End Sub
Repare "UserForm1" é o nome da rotina que será "morta" após os 5 segundos. Ou seja, se a sua rotina se chamar "Minha_rotina", a linha será "unload Minha_rotina".
Repetir a cada X segundos
Uma outra aplicação que você pode dar à função OnTime é fazer com que uma rotina seja executada a cada tempo específico, por exemplo a cada 1 minuto.
Isso será muito útil para uma planilha que contenha dados importantes e que, por isso, você quer que os dados sejam salvos a cada minuto e de forma automática. Dessa forma é só usar uma macro que salva automaticamente e configurar para ela executar a cada 60 segundos.
Crie um módulo na sua planilha e cole o seguinte código
Sub gravar() 'Se a sua rotina tiver outro nome aqui
Aqui você insere o seu código que faz a gravação ou qualquer outro que quiser
Call timer
End Sub
Sub timer()
Application.OnTime Now + TimeValue("00:01:00"), "gravar" 'não esqueça de editar aqui
End Sub
Repare que as regras das horas, minutos e segundos é a mesma de antes.
Se você quiser ver um exemplo rodando a cada 5 segundos só para comprovar a eficiência do seu código, cole em um módulo as instruções
Sub gravar() 'Se a sua rotina tiver outro nome aqui
MsgBox "Funcionou =)"
Call timer
End Sub
Sub timer()
Application.OnTime Now + TimeValue("00:00:05"), "gravar" 'não esqueça de editar aqui
End Sub
Essas são apenas algumas das utilidades do recurso .onTime e se você resolver explorá-lo mais a fundo verá que as opções são ilimitadas.
😕 Poxa, o que podemos melhorar?
😃 Boa, seu feedback foi enviado!
✋ Você já nos enviou um feedback para este texto.