Пауза VBA | Призупиніть код VBA, використовуючи функцію сну та очікування

Призупинити роботу коду VBA

Пауза VBA використовується для призупинення виконання коду протягом певного періоду часу і для призупинення коду у VBA ми використовуємо метод application.wait.

Коли ми будуємо великі проекти VBA після виконання чогось, нам може знадобитися почекати деякий час, щоб виконати інші завдання. У таких сценаріях, як нам призупинити макрокод, щоб виконати своє завдання? Ми можемо призупинити код VBA на певний проміжок часу, використовуючи дві функції, і це функції “Чекати” та “Сплячи”.

Як призупинити код за допомогою методу очікування?

«Чекати» - це функція, яку ми використовуємо у VBA для утримання макросу, який працює протягом певної кількості часу. Застосовуючи цю функцію, нам слід зазначити, до якого часу повинен чекати наш код.

Ви можете завантажити цей шаблон VBA Pause Excel тут - VBA Pause Excel Template

Наприклад, якщо ви виконуєте код о 13:00:00, якщо вказали час як “13:15:00”, тоді макрос буде утримуватися 15 хвилин.

Тепер погляньмо на аргумент функції WAIT у VBA.

У аргументі часу нам слід зазначити, в який час наш код повинен призупинити або зачекати.

Наприклад, подивіться на наведений нижче код VBA.

Код:

 Sub Pause_Example1 () Діапазон ("A1"). Значення = "Привіт" Діапазон ("A2"). Значення = "Ласкаво просимо" Додаток. Зачекайте ("13:15:00") Діапазон ("A3"). Значення = " До VBA "Кінець Sub 

Пам'ятайте, під час запуску цього коду мій системний час - 13:00:00, як тільки я запустив код, він виконає перші два рядки, тобто

Діапазон ("A1"). Значення = "Привіт" & Діапазон ("A2"). Значення = "Ласкаво просимо"

Але якщо ви подивитесь на наступний рядок, там буде сказано Application.Wait (“13:15:00”), тож після виконання цих завдань мій макрос буде призупинено на 15 хвилин, тобто з 13:00:00 він буде чекати, поки моя система час досягає 13:15:01.

Як тільки мій системний час досягне цього часу, він виконає решту рядків коду.

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

Однак це не найкращий спосіб відпрацювання коду паузи, припустимо, ви запускаєте код у різний час, тоді нам потрібно використовувати функцію NOW VBA з функцією TIME VALUE.

Тепер функція повертає поточну дату та час відповідно до системи, над якою ми працюємо.

Функція TIME значення утримує час з 00:00:00 до 23:59:29.

Гаразд, припустимо, що нам потрібно призупиняти код на 10 хвилин при кожному запуску коду, тоді ми можемо використовувати наведений нижче код.

Код:

 Sub Pause_Example1 () Діапазон ("A1"). Значення = "Привіт" Діапазон ("A2"). Значення = "Ласкаво просимо" Додаток. Зачекайте (Зараз () + TimeValue ("00:00:10")) Діапазон (" A3 "). Value =" До VBA "Кінцева допод 

Це схоже на попередній код, але єдина відмінність - ми додали функцію NOW & TIME VALUE.

Кожного разу, коли ми запускаємо цей код, він утримує або призупиняє виконання протягом 10 хвилин.

Як призупинити код VBA, використовуючи метод сну?

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

Код:

# Якщо VBA7, то загальнодоступне оголошення 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, представлена ​​у файлах DLL Windows, тому нам потрібно оголосити номенклатуру перед тим, як розпочати підпроцедуру.

Добре, давайте розглянемо приклад функції SLEEP зараз.

Код:

 Sub Pause_Example2 () Приглушити час початку як рядок Приглушити час закінчення як рядок StartTime = час MsgBox StartTime Sleep (10000) EndTime = час MsgBox EndTime End Sub 

По-перше, ми оголосили дві змінні як String.

 Приглушити час початку як рядок Приглушити час закінчення як рядок 

Тоді ми призначили функцію TIME excel змінній StartTime. Функція TIME повертає поточний час відповідно до системи.

StartTime = Час

Потім ми призначили те саме, що відображатиметься у вікні повідомлення.

MsgBox StartTime

Тоді я застосував функцію SLEEP як режим сну (10000).

Тут 10000 - це мілісекунди, що дорівнює 10 секундам у VBA.

Потім, нарешті, я призначив ще одну функцію TIME змінній EndTime .

Тепер я знову написав код, щоб показати час.

EndTime = Час

Це покаже різницю між часом початку та часом закінчення.

Зараз я виконаю код і подивлюся, який час запуску.

Коли я виконую код, мій системний час становить 13:40:48, і тепер мій код буде спати 10 секунд. Зрештою, мій час такий.

Отже, таким чином, ми можемо призупинити виконання коду протягом певного періоду часу.