Funções de espera e suspensão do VBA - Código VBA de pausa / retardo

Este tutorial demonstrará como pausar / atrasar o código usando as funções Wait e Sleep no VBA.

Quando criamos grandes programas VBA que realizam muitos cálculos, ou talvez até mesmo chamamos um programa externo para ser executado, podemos exigir que nosso código VBA pare de ser executado por um período específico de tempo enquanto o processo externo está ocorrendo. O VBA tem alguns métodos disponíveis para fazer isso.

Uso do Método Application.Wait

Se precisarmos pausar a execução de nossa macro por algum tempo ou até que um tempo especificado seja alcançado antes de executar a próxima etapa, podemos usar o Application.Wait método. Isso pode ser útil, por exemplo, se tivermos automatizado um processo de login em um site e precisarmos esperar alguns segundos até que a página seja carregada para que nossa macro continue em execução.

Espere 1 segundo

Incluindo esta linha abaixo em sua macro, sua execução será pausada por aproximadamente 1 segundo:

1 Application.Wait (Now + TimeValue ("0:00:01"))

Espere até

Em alguns casos, você precisará esperar até um horário específico. Com esta linha abaixo, sua macro não prosseguirá antes das 9h:

1 Application.Wait "09:00:00"

Observe que o Application.Wait não aceita atrasos de menos de 1 segundo.

Programação VBA | O Code Generator funciona para você!

Uso do método do sono

Se precisar de uma maneira mais precisa de pausar sua macro, você pode usar o método Sleep.

Dormir é uma função da API do Windows, ou seja, não faz parte do VBA. Ele pode ser acessado usando uma declaração de declaração especial.

Se você estiver usando a versão de 64 bits do Microsoft Office, poderá inserir a seguinte instrução em um novo módulo ou no início do módulo (não diretamente na sub-rotina) em que deseja usar a função Dormir:

1 Public Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal Milissegundos As LongPtr)

Com a versão de 32 bits, use esta linha:

1 Public Declare Sub Sleep Lib "kernel32" (ByVal Milissegundos As LongPtr)

Depois de declarar a função Sleep, você tem acesso a ela em suas sub-rotinas como esta:

1 Dormir 10000

Com esta linha acima, sua macro será pausada por 10.000 milissegundos, ou seja, 10 segundos.

Usando um Loop com eventos Do

A grande desvantagem de usar os métodos Wait e Sleep é que o usuário não pode fazer nada no Excel enquanto espera a macro continuar. Um usuário pode pensar que o Excel parou de responder e enquanto o usuário pode usar Ctl + Break para interromper a macro, isso anula o propósito de colocar uma pausa na macro para começar.

Para superar esse problema, podemos usar um loop com um método chamado DoEvents.

1234567 Subteste público ()Dim i enquantoPara i = 1 a 20.000Intervalo (“A1”). Valor = iDoEventsProximo euEnd Sub

Agora, enquanto o Excel está executando a macro acima, o usuário pode continuar a interagir com o Excel - podemos alterar as guias ou formatar células, por exemplo - basicamente, a macro continua a ser executada, mas a tela do Excel não está congelada. Poderíamos usar um loop semelhante para criar uma função de cronômetro no Excel e incorporar o DoEvents método para descongelar a tela enquanto o cronômetro está funcionando.

Você vai ajudar o desenvolvimento do site, compartilhando a página com seus amigos

wave wave wave wave wave