VBA oote- ja unerežiimi funktsioonid - paus / viivitus VBA kood

See õpetus näitab, kuidas koodi peatada / edasi lükata, kasutades VBA ootamise ja unerežiimi funktsioone.

Kui loome suuri VBA programme, mis sooritavad palju arvutusi, või kutsume võib -olla isegi välise programmi käivitama, võime nõuda, et meie VBA -kood lõpetaks töötamise teatud aja jooksul välise protsessi toimumise ajal. VBA -l on selle saavutamiseks saadaval mõned meetodid.

Rakenduse kasutamine. Oota meetod

Kui peame enne järgmise sammu täitmist oma makro töötamise mõneks ajaks peatama või kuni määratud ajani on jõutud, saame kasutada Rakendus. Oota meetod. See võib olla kasulik näiteks siis, kui oleme veebisaidile sisselogimisprotsessi automatiseerinud ja peame ootama mõne sekundi, kuni leht laaditakse, enne kui meie makro töötab edasi.

Oodake 1 sekund

Kui lisate selle rea oma makrosse, peatatakse selle käitamine umbes 1 sekundiks.

1 Application.Wait (Now + TimeValue ("0:00:01"))

Oota kuni

Mõnel juhul peate ootama teatud aja. Kui see rida on allpool, ei jätka teie makro kasutamist enne kella 9:

1 Application.Oota "09:00:00"

Pange tähele, et Rakendus. Oota ei aktsepteeri alla 1 -sekundilisi viivitusi.

VBA programmeerimine | Koodigeneraator töötab teie jaoks!

Unemeetodi kasutamine

Kui vajate oma makro peatamiseks täpsemat viisi, võite kasutada unerežiimi.

Unerežiim on Windowsi API funktsioon, see tähendab, et see ei kuulu VBA -sse. Sellele pääseb juurde spetsiaalse deklaratsiooni avaldusega.

Kui kasutate Microsoft Office'i 64-bitist versiooni, saate järgmise avaldise sisestada uude moodulisse või selle mooduli algusesse (mitte otse alamprogrammi), milles soovite unerežiimi kasutada:

1 Avalik deklareerimine PtrSafe Sub Sleep Lib "kernel32" (ByVal Millisekundid nagu LongPtr)

32-bitise versiooni korral kasutage seda rida:

1 Avalik deklareerimine Sub Sleep Lib "kernel32" (ByVal Millisekundid nagu LongPtr)

Pärast unerežiimi väljakuulutamist on teil juurdepääs sellele oma alamprogrammides järgmiselt:

1 Maga 10000

Kui see rida asub teie makro kohal, peatatakse 10 000 millisekundit, st 10 sekundit.

Loopi kasutamine koos sündmustega

Ootamise ja unerežiimi kasutamise suur puudus on see, et kasutaja ei saa makro jätkamist oodates Excelis midagi teha. Kasutaja võib arvata, et Excel on lakanud reageerimast ja kasutaja saab seejärel kasutada Ctl+vaheaeg Makro katkestamiseks kaotab see eesmärgi panna makrosse paus.

Selle probleemi lahendamiseks saame kasutada tsüklit meetodiga nimega DoEvents.

1234567 Avalik alamkatse ()Dim i As LongI = 1 kuni 20 000Vahemik (“A1”). Väärtus = iDoEventsEdasi iEnd Sub

Nüüd, kui Excel käitab ülaltoodud makrot, saab kasutaja jätkata Exceliga suhtlemist - saame näiteks vahekaarte vahetada või lahtreid vormindada - põhimõtteliselt jätkatakse makro käivitamist, kuid Exceli ekraan pole külmutatud. Võiksime kasutada sarnast tsüklit Excelis taimerifunktsiooni loomiseks ja selle lisamiseks DoEvents meetod, mille abil saate ekraani külmutamise taimeriga töötamise ajal vabastada.

Te aitate arengu ala, jagades leht oma sõpradega

wave wave wave wave wave