Функция ожидания VBA | Как использовать метод ожидания Excel VBA?

Функция ожидания Excel VBA

VBA Wait - это встроенная функция, используемая для приостановки выполнения кода на указанное время, она очень похожа на то, что мы делаем в команде сна, а для приостановки кода мы используем метод application.wait.

Некоторым кодам требуется некоторое время, прежде чем перейти к следующей строке кода из-за выполнения других задач. В этих случаях нам нужно остановить выполнение кода и приостановить его на некоторое время, а затем продолжить выполнение. Мы можем приостановить выполнение кода двумя способами: первый - это метод «сна», а второй - метод «ожидания». В нашей предыдущей статье мы обсудили метод «VBA Sleep» для приостановки кода VBA.

«Подождите», как говорит само название, он будет удерживать код макроса, который будет выполняться в указанный период времени. Используя этот метод, нам нужно указать время, когда наш код должен приостановиться, мы увидим примеры далее.

Синтаксис функции WAIT следующий.

Нам нужно указать количество времени, на которое наш код должен приостановиться. Как вы можете видеть в конце, он говорит Boolean, это означает, что он возвращает результат в виде логических значений, то есть TRUE или FALSE.

Пока не наступило указанное время, он говорит ЛОЖЬ, а в момент наступления указанного времени возвращается ИСТИНА.

Это не похоже на функцию SLEEP, потому что WAIT - это встроенная функция, а SLEEP - это функция Windows. Прежде чем мы получим доступ к функции SLEEP, нам нужно упомянуть приведенный ниже код в верхней части модуля. Но WAIT этого не требует.

Код:

# Если VBA7, то общедоступное объявление PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As LongPtr) 'для 64-битных систем # Else Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)' для 32-битных систем Конец, если 

Примеры использования функции ожидания Excel VBA

Вы можете скачать этот шаблон VBA Wait Excel здесь - Шаблон VBA Wait Excel

Пример # 1

Предположим, вы работаете в Excel в середине дня в 14:30:00 и хотите, чтобы ваш код был приостановлен, пока время не станет 14:40:00. Вы можете использовать приведенный ниже код.

Код:

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

Код остановит работу вашего Excel до 14:40:00 в вашей операционной системе. Уделить такое время опасно, потому что мы не всегда работаем с 14:30:00, оно все время меняется.

Допустим, каждый раз, когда вы запускаете код, вы хотите подождать 2 минуты, как это указать в своем коде?

Итак, мы можем использовать функцию VBA NOW с функцией TIME VALUE, чтобы ввести указанное время от текущего времени.

Напомню, что функция NOW () возвращает текущую дату и время в соответствии с вашей компьютерной системой. Функция TIMEVALUE представляет время с 00:00:00 до 23:59:59, т.е. 23:59:59 PM в 24-часовом формате. Он преобразует строковое значение во временное значение.

Например, NOW () + TIMEVALUE (00:02:30) означает текущее время + 2 мин 30 сек.

Если текущее время 14:25:30, то оно становится 14:28:00.

Чтобы остановить или приостановить выполнение вашего кода с текущего времени до следующих 10 минут, вы можете использовать приведенный ниже код.

Код:

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

Важно использовать функцию NOW () для точной паузы, иначе есть вероятность, что ваша рабочая книга Excel будет приостановлена ​​до полуночи. Однако мы можем выйти из метода паузы в любой момент, нажав клавишу Esc или клавишу Break.

Пример # 2

Подождите 10 секунд при каждом запуске цикла

Метод ожидания хорошо используется с циклами. Бывают ситуации, когда вам может потребоваться подождать 10 секунд при каждом запуске цикла. Например, посмотрите на данные ниже.

Чтобы вычислить прибыль = (Продажи - Стоимость), вы хотите создать цикл, и после каждого цикла вы хотите подождать 10 секунд, чтобы проверить, точен ли результат или нет. Код ниже сделает это.

Код:

 Sub Wait_Example3 () Dim k как целое число для k = от 2 до 9 ячеек (k, 4) .Value = Cells (k, 2) - Cells (k, 3) Application.Wait (Now () + TimeValue ("00:00 : 10 ")) Далее k End Sub 

Этот код будет посчитать столбец прибыли построчно. После завершения первой строки он будет ждать 10 секунд, прежде чем вычислить следующую строку.

VBA Sleep против VBA Wait

VBA SLEEPVBA WAIT
Это не встроенная функция VBA, для доступа к ней требуется специальный код.Это встроенная функция VBA, не требующая специального кода для доступа к этой функции.
Сон требует миллисекунд в качестве временных рамок.Ожидание требует регулярных временных рамок.
Мы можем отложить код за миллисекундыМы можем задержать только на целые секунды.