Функція очікування VBA | Як використовувати метод очікування Excel VBA?

Функція очікування Excel VBA

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

Деякі коди вимагають часу до переходу до наступного рядка коду через інші завдання, які потрібно виконати. У цих випадках нам потрібно зупинити виконання коду та зробити паузу на деякий час, а потім продовжити виконання. Ми можемо призупинити код, який буде виконаний двома способами, перший - це метод “Sleep”, а другий - “Wait”. У нашій попередній статті ми обговорили метод “VBA Sleep” для призупинення коду VBA.

"Зачекайте", як випливає з самої назви, він буде містити код макросу, який буде виконаний до певного часу. За допомогою цього методу нам потрібно вказати час, коли наш код повинен робити паузу, ми побачимо приклади далі.

Синтаксис функції WAIT такий.

Слід зазначити, скільки часу наш код повинен робити паузу. Як ви можете бачити в кінці, в ньому сказано логічне значення, це означає, що він повертає результат як логічні значення, тобто TRUE або FALSE.

До вказаного часу він пише FALSE, а в той момент, коли вказаний час приходить, він повертає TRUE.

Це на відміну від функції SLEEP, оскільки WAIT - це вбудована функція, де SLEEP - це функція Windows. Перш ніж ми отримаємо доступ до функції SLEEP, нам слід згадати наведений нижче код у верхній частині модуля. Але ЗАЧЕКАЙТЕ цього не вимагає.

Код:

# Якщо 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 Template

Приклад №1

Припустімо, що ви працюєте в середині дня о 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 As Integer For k = 2 To 9 Cells (k, 4) .Value = Cells (k, 2) - Cells (k, 3) Application.Wait (Now () + TimeValue ("00:00 : 10 ")) Далі k Кінець Sub 

Цей код буде обчислювати рядок за рядком прибутку. Після завершення першого рядка він зачекає 10 секунд, перш ніж обчислить наступний рядок.

Сон VBA проти VBA Зачекайте

VBA СОНVBA ЗАЧЕКАЙТЕ
Це не вбудована функція VBA, для доступу до цієї функції потрібен спеціальний код.Це вбудована функція VBA, яка не потребує спеціального коду для доступу до цієї функції.
Сон вимагає мілісекунд як часовий проміжок.Чекання вимагає регулярних часових рамок.
Ми можемо затримати код в мілісекундахМи можемо затримати лише цілі секунди.