Função de espera VBA

Função de espera do Excel VBA

VBA Wait é uma função embutida usada para pausar a execução do código por um determinado período de tempo, é muito semelhante ao que fazemos em um comando sleep e para pausar um código usamos o método application.wait.

Alguns dos códigos requerem algum tempo antes de avançar para a próxima linha de código devido a outras tarefas a serem concluídas. Nestes casos, precisamos parar o código a ser executado e pausar por algum tempo para prosseguir com a execução. Podemos pausar o código para ser executado de duas maneiras, a primeira é o método “Sleep” e a segunda é o método “Wait”. Em nosso artigo anterior, discutimos o método “VBA Sleep” para pausar o código VBA.

“Espere”, como o próprio nome diz, manterá o código de macro a ser executado em um período de tempo especificado. Usando este método, precisamos especificar o tempo que nosso código deve pausar, veremos exemplos a seguir.

A sintaxe da função WAIT é a seguinte.

Precisamos mencionar a quantidade de tempo que nosso código deve pausar. Como você pode ver no final, diz Boolean, isso significa que retorna o resultado como valores booleanos, isto é, TRUE ou FALSE.

Até que a hora especificada chegue, ele diz FALSE e no momento que a hora especificada chega, ele retorna TRUE.

Isso é diferente da função SLEEP porque WAIT é uma função interna onde SLEEP é uma função do Windows. Antes de acessarmos a função SLEEP, precisamos mencionar o código abaixo no topo do módulo. Mas WAIT não exige isso.

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)' Para sistemas de 32 bits End If 

Exemplos para usar a função de espera VBA do Excel

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

Exemplo 1

Suponha que você esteja trabalhando em um excel ao meio-dia às 14:30:00 e deseja que seu código seja pausado até que chegue às 14:40:00. Você pode usar o código abaixo.

Código:

 Sub Wait_Example1 () Application.Wait "14:40:00" End Sub 

O código impedirá o funcionamento do seu excel até que chegue às 14:40:00 no seu sistema operacional. Proporcionar horários como este é perigoso porque nem sempre trabalhamos a partir das 14h30, fica variando o tempo todo.

Digamos que sempre que você estiver executando o código que deseja aguardar por 2 minutos, como referencie isso em seu código?

Portanto, podemos usar a função VBA NOW com a função TIME VALUE para inserir a hora especificada a partir da hora atual.

Só para lembrá-lo, a função NOW () retorna a data e a hora atuais de acordo com o sistema do seu computador. A função TIMEVALUE representa a hora de 00:00:00 a 23:59:59, ou seja, 11:59:59 PM no formato de 24 horas. Ele converte o valor da string em um valor de tempo.

Por exemplo NOW () + TIMEVALUE (00:02:30) significa hora atual + 2 min 30 seg.

Se a hora atual for 14:25:30, então será 14:28:00.

Para interromper ou pausar a execução do código da hora atual até os próximos 10 minutos, você pode usar o código a seguir.

Código:

 Sub Wait_Example2 () Application.Wait (Now () + TimeValue ("00:10:00")) End Sub 

É importante usar uma função NOW () para uma pausa precisa, caso contrário, há chances de sua pasta de trabalho do Excel ter pausado até meia-noite. No entanto, podemos sair do método de pausa a qualquer momento pressionando a tecla Esc ou a tecla Break.

Exemplo # 2

Aguarde 10 segundos sempre que o loop for executado

O método de espera é bem usado com loops. Existem situações em que pode ser necessário esperar 10 segundos sempre que o loop for executado. Por exemplo, veja os dados abaixo.

Para calcular Lucro = (Vendas - Custo) você deseja criar um loop e depois de cada loop, você deseja esperar 10 segundos para verificar se o resultado é preciso ou não. O código abaixo fará isso.

Código:

 Sub Wait_Example3 () Dim k As Integer For k = 2 To 9 Cells (k, 4) .Value = Cells (k, 2) - Cells (k, 3) Application.Wait (Now () + TimeValue ("00:00 : 10 ")) Próximo k End Sub 

Este código irá calcular a coluna de lucro linha por linha. Após a conclusão da primeira linha, ele aguardará 10 segundos antes de calcular a próxima linha.

VBA Sleep vs VBA Wait

VBA SLEEPVBA WAIT
Não é uma função incorporada do VBA, precisa de um código especial para acessar esta função.É uma função interna do VBA, não requer nenhum código especial para acessar esta função.
O sono requer milissegundos como período de tempo.A espera requer um período de tempo regular.
Podemos atrasar o código em milissegundosPodemos atrasar apenas alguns segundos inteiros.