Como usar os comandos wait e sleep no vba?
Comando de espera do VBA
No VBA, o comando (método) WAIT ajuda você a esperar todas as atividades que você está realizando no Excel por um determinado horário ou até um horário específico. Simplificando, você pode fazer o VBA esperar alguns segundos, minutos ou até horas, ou até um horário fixo. Tem um argumento que requer que você o especifique.
Etapas para usar o VBA Wait
- Primeiro, use a palavra-chave “Aplicativo” e digite um ponto final (.) para obter a lista de propriedades e métodos.
- Depois disso, selecione ou toque no método “Aguardar”.
- Agora especifique o argumento “Time” para informar ao VBA quanto tempo você deseja esperar.
- Ao final, execute o código para enfileirar todas as atividades no Excel.
Neste código, você usou NOW e TIMEVALUE ( funções VBA ) para dizer ao VBA para esperar dez segundos a partir do momento em que você executou o código. Assim, uma vez decorridos os dez segundos, a instrução IF testará a condição e será executada, mostrando uma caixa de mensagem com a mensagem “Aguarde”.
Sub vba_wait_example() If Application.Wait(Now + TimeValue("00:00:10")) = True Then MsgBox "Wait Over" End If End Sub
Você também pode usar o método Wait para permitir que o Excel aguarde todas as atividades até um horário específico. O código a seguir espera até 13h. Então, como são 12h52 no meu sistema agora, esse código de linha fará com que ele espere pelos próximos 8 minutos.
Application.Wait "13:00:00"
Nota: Com o método wait, você só pode esperar pelo menos um segundo.
Sono VBA
Sleep é uma função do Windows ( em arquivos DLL do Windows; você precisa importar esta função usando uma instrução de código ) que pode ajudá-lo a pausar ou adicionar um atraso ao executar uma macro . Nesta função você pode especificar o tempo em milissegundos, mas não pode interromper a função sleep depois de pausar tudo.
Use a função sleep no VBA
- Primeiro de tudo, você precisa usar a instrução de código para importar a função sleep da “ biblioteca kernel32 ”.
- E então você precisa adicionar a instrução “PtrSafe” se estiver usando o Excel de 64 bits.
- Então você precisa chamar a função sleep no código.
- Ao final, especifique o tempo (milissegundos) que deseja atrasar o código.
If VBA7 Then ' For 64-Bit versions of Excel
Public Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As LongPtr)
Else 'For 32-Bit versions of Excel Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) End If Sub vba_sleep() Sleep (10000) 'add code here MsgBox "Finished" End Sub
No código acima você tem 10.000 milissegundos, o que equivale a 10 segundos. Quando você executa esse código, ele atrasa o código por 10 segundos e depois mostra uma caixa de mensagem.
Obs: Quando você usa a função sleep, ela para tudo no Excel pelo tempo que você definiu, não dá nem para quebrar. Não deixe de conferir este link da Microsoft sobre compatibilidade entre versões de 32 e 64 bits .