ВБА функције чекања и спавања - ВБА код паузе / одлагања

Овај водич ће показати како да паузирате / одложите код помоћу функција чекања и спавања у ВБА.

Када стварамо велике ВБА програме који изводе много прорачуна, или можда чак позивају покретање спољних програма, можда ћемо захтевати да наш ВБА код престане да ради на одређено време док се одвија спољни процес. ВБА има неколико доступних метода да то постигне.

Употреба методе Апплицатион.Ваит

Ако морамо да паузирамо покретање нашег макроа неко време или док се не достигне одређено време пре извршавања следећег корака, можемо користити Апликација.Чекајте метода. Ово би могло бити корисно, на пример, ако смо аутоматизовали процес пријављивања на веб локацију и морамо да сачекамо неколико секунди док се страница не учита пре него што наш макро настави да ради.

Сачекајте 1 секунду

Укључујући ову линију испод у ваш макро, њено покретање ће бити паузирано на приближно 1 секунду:

1 Апплицатион.Ваит (Сада + ТимеВалуе ("0:00:01"))

Чекати

У неким случајевима морате сачекати одређено време. Са овим редом испод, ваш макро неће наставити пре 9 сати:

1 Пријава. Сачекајте "09:00:00"

Имајте на уму да је Апликација.Чекајте не прихвата кашњења краћа од 1 секунде.

ВБА програмирање | Генератор кода ради за вас!

Употреба методе спавања

Ако вам је потребан прецизнији начин паузирања макроа, можете користити методу спавања.

Спавање је функција Виндовс АПИ -ја, односно није део ВБА. Може се приступити коришћењем посебне изјаве декларације.

Ако користите 64-битну верзију Мицрософт Оффице-а, можете уметнути следећу наредбу у нови модул или на почетак модула (не директно у потпрограму) у којем желите да користите функцију спавања:

1 Јавно прогласи ПтрСафе Суб Слееп Либ "кернел32" (БиВал Милисекунде као ЛонгПтр)

Са 32-битном верзијом користите ову линију:

1 Јавно прогласи Суб Слееп Либ "кернел32" (БиВал милисекунде као ЛонгПтр)

Након што декларишете функцију мировања, имате приступ њој у вашим потпрограмима на следећи начин:

1 Спавајте 10000

Са овом линијом изнад, ваш макро ће бити паузиран 10.000 милисекунди, односно 10 секунди.

Коришћење петље са До Догађајима

Велики недостатак коришћења метода чекања и спавања је то што корисник не може учинити ништа у програму Екцел док чека да се макро настави. Корисници могу помислити да је Екцел престао да реагује и да их корисник тада може користити Цтл+Бреак да бисте прекинули макро, ово поништава сврху стављања паузе у макро за почетак.

Да бисмо превазишли овај проблем, можемо користити петљу са методом која се зове ДоЕвентс.

1234567 Јавни под тест ()Дим и Ас ЛонгЗа и = 1 до 20000Опсег („А1“). Вредност = иДоЕвентсЗатим самЕнд Суб

Сада, док Екцел покреће горњи макро, корисник може да настави интеракцију са Екцелом - на пример, можемо да мењамо картице или обликујемо ћелије - у основи, макро се наставља изводити, али екран програма Екцел није замрзнут. Сличну петљу бисмо могли користити за креирање функције тајмера у Екцелу и уградњу ДоЕвентс метод за одмрзавање екрана док тајмер ради.

Ви ће помоћи развој сајта, дељење страницу са пријатељима

wave wave wave wave wave