VBA Pause | Приостановить код VBA с помощью функции сна и ожидания

Приостановить выполнение кода VBA

VBA Pause используется для приостановки выполнения кода на определенное время, а для приостановки кода в VBA мы используем метод application.wait.

Когда мы создаем большие проекты VBA после выполнения чего-либо, нам может потребоваться некоторое время для выполнения других задач. Как в таких случаях приостановить код макроса для выполнения нашей задачи? Мы можем приостановить код VBA на определенный период времени, используя две функции: «Ожидание» и «Спящий режим».

Как приостановить код с помощью метода ожидания?

«Ждать» - это функция, которую мы используем в VBA для удержания выполнения макроса в течение определенного времени. Применяя эту функцию, мы должны указать, до какого времени наш код должен ждать.

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

Например, если вы выполняете код в 13:00:00, если вы укажете время как «13:15:00», то макрос будет выполняться в течение 15 минут.

Теперь посмотрим на аргумент функции WAIT в VBA.

В аргументе time нам нужно указать, в какое время наш код должен остановиться или подождать.

Например, посмотрите на приведенный ниже код VBA.

Код:

 Sub Pause_Example1 () Range ("A1"). Value = "Hello" Range ("A2"). Value = "Welcome" Application.Wait ("13:15:00") Range ("A3"). Value = " К VBA "End Sub 

Помните, что при запуске этого кода мое системное время 13:00:00, как только я запустил код, он выполнит первые две строки, т.е.

Range ("A1"). Value = "Hello" & Range ("A2"). Value = "Welcome"

Но если вы посмотрите на следующую строку, там написано Application.Wait («13:15:00»), поэтому после выполнения задач этих строк мой макрос будет приостановлен на 15 минут, т.е. с 13:00:00 он будет ждать, пока моя система время достигает 13:15:01.

Как только мое системное время достигнет этого времени, оно выполнит оставшиеся строки кода.

Диапазон ("A3"). Значение = "В VBA"

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

Теперь функция возвращает текущую дату и время в соответствии с системой, над которой мы работаем.

Функция TIME Value хранит время с 00:00:00 до 23:59:29.

Хорошо, предположим, что нам нужно приостанавливать код на 10 минут всякий раз, когда мы запускаем код, тогда мы можем использовать приведенный ниже код.

Код:

 Sub Pause_Example1 () Range ("A1"). Value = "Hello" Range ("A2"). Value = "Welcome" Application.Wait (Now () + TimeValue ("00:00:10")) Range (" A3 "). Value =" To VBA "End Sub 

Это похоже на предыдущий код, но с той лишь разницей, что мы добавили функцию NOW & TIME VALUE.

Каждый раз, когда мы запускаем этот код, он приостанавливает или приостанавливает выполнение на 10 минут.

Как приостановить код VBA с помощью метода сна?

Сон - сложная функция в VBA, потому что это не встроенная функция. Поскольку он не является встроенным, чтобы сделать его доступным для использования, нам нужно добавить приведенный ниже код в верхнюю часть нашего модуля.

Код:

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

Вам просто нужно скопировать приведенный выше код и вставить его вверху модуля.

Причина, по которой нам нужно добавить приведенный выше код, потому что SLEEP - это функция VBA, представленная в файлах Windows DLL, поэтому нам нужно объявить номенклатуру, прежде чем мы начнем подпроцедуру.

Хорошо, давайте теперь посмотрим на пример функции SLEEP.

Код:

 Sub Pause_Example2 () Dim StartTime As String Dim EndTime As String StartTime = Time MsgBox StartTime Sleep (10000) EndTime = Time MsgBox EndTime End Sub 

Сначала мы объявили две переменные как String.

 Dim StartTime As String Dim EndTime As String 

Затем мы назначили функцию TIME excel переменной StartTime. Функция ВРЕМЯ возвращает текущее время согласно системе.

StartTime = Время

Затем мы назначили то же самое для отображения в окне сообщения.

MsgBox StartTime

Затем я применил функцию SLEEP как Sleep (10000).

Здесь 10000 миллисекунд, что в VBA равно 10 секундам.

Наконец, я назначил переменной EndTime еще одну функцию TIME .

Я снова написал код, чтобы показывать время.

EndTime = Время

Это покажет разницу между временем начала и временем окончания.

Теперь я выполню код и посмотрю, какое время начала.

Когда я выполняю код, мое системное время 13:40:48, и теперь мой код будет спать 10 секунд. В конце концов, мое время таково.

Таким образом, мы можем приостановить выполнение кода на указанное время.