Pausar a execução do código VBA
A pausa do VBA é usada para interromper a execução do código por um determinado período de tempo e para pausar um código no VBA, usamos o método application.wait.
Quando construímos grandes projetos VBA depois de realizar algo, podemos precisar esperar algum tempo para fazer outras tarefas. Em tais cenários, como pausamos o código de macro para fazer nossa tarefa? Podemos pausar o código VBA por um período de tempo especificado usando duas funções, e essas funções são “Esperar” e “Dormir”.

Como pausar o código usando o método de espera?
“Esperar” é a função que usamos no VBA para manter a macro em execução por um período específico de tempo. Ao aplicar esta função, precisamos mencionar até que horas nosso código deve esperar.
Por exemplo, se você estiver executando o código às 13:00:00, se fornecer a hora como “13:15:00”, a macro será mantida em execução por 15 minutos.
Agora, olhe para o argumento da função WAIT no VBA.

No argumento de tempo, precisamos mencionar em que momento nosso código deve pausar ou esperar.
Por exemplo, observe o código VBA abaixo.
Código:
Sub Pause_Example1 () Range ("A1"). Value = "Hello" Range ("A2"). Value = "Welcome" Application.Wait ("13:15:00") Range ("A3"). Value = " Para VBA "End Sub

Lembre-se, ao executar este código, o horário do meu sistema é 13h00 Assim que eu executar o código, ele executará as duas primeiras linhas, ou seja,
Intervalo ("A1"). Valor = "Olá" e Intervalo ("A2"). Valor = "Bem-vindo"
Mas se você olhar para a próxima linha, ela diz Application.Wait (“13:15:00”), então após executar essas tarefas de linhas, minha macro será pausada por 15 minutos, ou seja, a partir das 13:00:00, vou esperar até que a hora do meu sistema chegue às 13:15:01
Quando o tempo do meu sistema atingir esse tempo, ele executará as linhas de código restantes.
Intervalo ("A3"). Valor = "Para VBA"
No entanto, essa não é a melhor maneira de praticar o código de pausa. Digamos que você esteja executando o código em momentos diferentes e, em seguida, precisamos usar a função NOW VBA com a função TIME VALUE.
Agora a função retorna a data e hora atuais de acordo com o sistema em que estamos trabalhando.
A função TIME Value mantém o tempo de 00:00:00 a 23:59:29.
Ok, suponha que precisamos pausar o código por 10 minutos sempre que executamos o código, então podemos usar o código abaixo.
Código:
Sub Pause_Example1 () Range ("A1"). Value = "Hello" Range ("A2"). Value = "Welcome" Application.Wait (Now () + TimeValue ("00:00:10")) Range (" A3 "). Valor =" Para VBA "End Sub

Isso é semelhante ao código anterior, mas a única diferença é que adicionamos a função NOW & TIME VALUE.
Sempre que executamos esse código, ele retém ou pausa a execução por 10 minutos.
Como pausar o código VBA usando o método Sleep?
Dormir é uma função complicada no VBA porque não é uma função interna. Como não é um built-in para torná-lo disponível para uso, precisamos adicionar o código abaixo no topo do nosso módulo.
Código:
#If VBA7 Then Public Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As LongPtr) 'Para sistemas de 64 bits #Else Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) #End If' Para sistemas de 32 bits
Você só precisa copiar o código acima e colá-lo no topo do módulo.

A razão pela qual precisamos adicionar o código acima, porque SLEEP é uma função VBA apresentada em arquivos DLL do Windows, então precisamos declarar a nomenclatura antes de iniciarmos o subprocedimento.
Ok, vamos dar uma olhada no exemplo da função SLEEP agora.
Código:
Sub Pause_Example2 () Dim StartTime As String Dim EndTime As String StartTime = Hora MsgBox StartTime Sleep (10000) EndTime = Hora MsgBox EndTime End Sub

Primeiro, declaramos duas variáveis como String.
Dim StartTime As String Dim EndTime As String
Em seguida, atribuímos a função TIME excel à variável StartTime. A função TIME retorna a hora atual de acordo com o sistema.
StartTime = Time
Em seguida, atribuímos o mesmo para mostrar na caixa de mensagem.
MsgBox StartTime
Então apliquei a função SLEEP como Sleep (10000).
Aqui, 10000 são milissegundos, o que é igual a 10 segundos em VBA.
Então, por fim, atribuí mais uma função TIME à variável EndTime .
Agora, novamente, escrevi um código para mostrar as horas.
EndTime = Time
Isso mostrará a diferença entre a hora de início e a hora de término.
Agora vou executar o código e ver qual é o horário de início.

Quando eu executo o código, o horário do meu sistema é 13:40:48 e agora meu código ficará inativo por 10 segundos. No final, meu tempo é o seguinte.

Portanto, assim, podemos interromper a execução do código por um determinado período de tempo.