VBA Pause - Pausar o código VBA usando a função Sleep and Wait

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.

Artigos interessantes...