Функції очікування та сну VBA - код паузи / затримки VBA

Цей підручник покаже, як призупинити / затримати код за допомогою функцій очікування та сну у VBA.

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

Використання методу Application.Wait

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

Зачекайте 1 секунду

Якщо включити цей рядок нижче у ваш макрос, його виконання буде призупинено приблизно на 1 секунду:

1 Application.Wait (Зараз + TimeValue ("0:00:01"))

Зачекайте до

У деяких випадках вам доведеться почекати до певного часу. У цьому рядку нижче ваш макрос не працюватиме до 9 ранку:

1 Заявка. Зачекайте "09:00:00"

Зверніть увагу, що Застосування. Зачекайте не приймає затримок менше 1 секунди.

Програмування VBA | Генератор коду працює для вас!

Використання методу сну

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

Сон - це функція Windows API, тобто вона не є частиною VBA. Доступ до нього можна отримати за допомогою спеціальної заяви декларації.

Якщо ви використовуєте 64-розрядну версію Microsoft Office, ви можете вставити наступний вираз у новий модуль або на початку модуля (не безпосередньо у підпрограмі), у якому потрібно використовувати функцію сну:

1 Публічно оголосити PtrSafe Sub Sleep Lib "kernel32" (ByVal мілісекунди як LongPtr)

У 32-розрядній версії використовуйте цей рядок:

1 Публічно оголосити Sub Sleep Lib "kernel32" (ByVal Milliseconds As LongPtr)

Після оголошення функції сну у вас є доступ до неї у ваших підпрограмах, наприклад:

1 Спати 10000

З цим рядком вище ваш макрос буде призупинено на 10000 мілісекунд, тобто на 10 секунд.

Використання циклу з подіями Do

Великим недоліком використання методів очікування та сну є те, що користувач не може нічого робити в Excel під час очікування продовження макросу. Користувач міг подумати, що Excel перестав відповідати, і тоді користувач зможе користуватися Ctl+Break щоб перервати макрос, це порушує мету введення паузи в макрос для початку.

Щоб подолати цю проблему, ми можемо використовувати цикл з методом під назвою DoEvents.

1234567 Публічний субтест ()Dim i As LongДля i = 1 до 20000Діапазон (“A1”). Значення = iDoEventsДалі iEnd Sub

Тепер, коли Excel запускає макрос вище, користувач може продовжувати взаємодію з Excel - ми можемо змінювати вкладки або форматувати клітинки, - в основному, макрос продовжує працювати, але екран Excel не застигає. Ми могли б використовувати подібний цикл для створення функції таймера в Excel та включення DoEvents спосіб розморозити екран під час роботи таймера.

Ви допоможете розвитку сайту, поділившись сторінкою з друзями

wave wave wave wave wave