Pausa VBA

Pausar a execução do código VBA

O VBA Pause é usado para interromper a execução do código por um determinado período de tempo e para interromper 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.

Você pode baixar este modelo de pausa do VBA aqui - modelo do Excel de pausa do VBA

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 de que ao executar este código, o horário do meu sistema é 13:00:00, assim que eu executar o código ele executará as duas primeiras linhas

Intervalo ("A1"). Valor = "Olá" e Intervalo ("A2"). Valor = "Bem-vindo"

Mas se você olhar para a próxima linha diz Application.Wait (“13:15:00”), então depois de executar essas tarefas de linhas minha macro será pausada por 15 minutos, ou seja, a partir das 13:00:00 irá esperar até meu sistema o tempo chega às 13:15:01.

Assim que o tempo do meu sistema atingir esse tempo, ele executará as linhas de código restantes.

Faixa ("A3"). Valor = "Para VBA"

No entanto, esta não é a melhor maneira de praticar o código de pausa, digamos que você esteja executando o código em momentos diferentes, então 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. Uma vez que não é um built-in, a fim de 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 eu apliquei a função SLEEP como Sleep (10000).

Aqui, 10000 é milissegundos, o que é igual a 10 segundos em VBA.

Então, finalmente, 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, a hora do meu sistema é 13:40:48 e agora meu código vai dormir 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.