VBA várakozási funkció | Hogyan kell használni az Excel VBA várakozási módszert?

Excel VBA várakozási funkció

A VBA Wait egy beépített függvény, amelyet a kód végrehajtásának szüneteltetésére használnak egy meghatározott ideig, nagyon hasonlít ahhoz, amit alvásparancsban csinálunk, és szüneteltethetünk egy kódot, amelyet az application.wait módszerrel használunk.

Néhány kód megköveteli valamikor, mielőtt továbblépne a következő kódsorra, más elvégzendő feladatok miatt. Ezekben az esetekben le kell állítanunk a végrehajtandó kódot, és egy ideig szüneteltetnünk, majd folytatnunk kell a végrehajtást. Kétféleképpen szüneteltethetjük a végrehajtandó kódot: az első a „Sleep”, a második a „Wait” módszer. Korábbi cikkünkben megvitattuk a „VBA Sleep” módszert a VBA kód szüneteltetésére.

„Várjon”, mivel maga a név azt mondja, hogy a végrehajtandó makrokódot egy meghatározott időkereten belül tartja. Ezzel a módszerrel meg kell adnunk a kód szüneteltetésének idejét, a következő példákat láthatjuk.

A WAIT függvény szintaxisa a következő.

Meg kell említenünk, hogy a kódunknak mennyi ideig kell szünetelnie. Amint láthatja a végén Boolean-t, ez azt jelenti, hogy az eredményt logikai értékekként adja vissza, azaz IGAZ vagy HAMIS.

Amíg a megadott idő el nem érkezik, a FALSE feliratot mondja, és a megadott idő elérésekor IGAZ értéket ad vissza.

Ez ellentétben van a SLEEP funkcióval, mivel a WAIT egy beépített funkció, ahol a SLEEP egy Windows funkció. Mielőtt hozzáférnénk a SLEEP funkcióhoz, meg kell említenünk az alábbi kódot a modul tetején. De a WAIT nem igényli ezt.

Kód:

# Ha VBA7, akkor Nyilvános deklarálja a PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As LongPtr) "64 bites rendszerekhez # Egyéb Nyilvános deklarálja az alvó alveszt Lib" kernel32 "(ByVal dwMilliseconds olyan hosszú)" 32 bites rendszerekhez 

Példák az Excel VBA Wait Function használatára

Ezt a VBA Wait Excel sablont innen töltheti le - VBA Wait Excel sablont

1. példa

Tegyük fel, hogy egy excel napközben, 14: 30: 00-kor dolgozik, és azt szeretné, hogy a kódja szüneteljen, amíg az idő 14:40:00 lesz. Használhatja az alábbi kódot.

Kód:

 Sub Wait_Példa1 () Application.Wait "14:40:00" End Sub 

A kód megakadályozza az excel működését, amíg az idő el nem éri az operációs rendszer 14:40:00 óráját. Az ilyen idő biztosítása veszélyes, mert nem mindig dolgozunk 14: 30-tól, az folyamatosan változik.

Tegyük fel, hogy amikor azt a kódot futtatja, amelyet 2 percig várni szeretne, hogyan utalhatja ezt a kódjára?

Tehát használhatjuk a VBA MOST funkciót IDŐÉRTÉK funkcióval a megadott idő megadásához az aktuális időponttól.

Csak emlékeztetni MOST () függvény visszaadja az aktuális dátumot és időt a számítógépes rendszerének megfelelően. A TIMEVALUE funkció 00:00:00 és 23:59:59, azaz 23:59:59 PM között 24 órás formátumban jeleníti meg az időt. A karakterlánc értékét időértékre konvertálja.

Például a NOW () + TIMEVALUE (00:02:30) azt jelenti, hogy az aktuális idő + 2 perc 30 mp.

Ha a jelenlegi idő 14:25:30, akkor 14:28:00 lesz.

A kód végrehajtásának leállításához vagy szüneteltetéséhez az aktuális időtől a következő 10 percig használhatja az alábbi kódot.

Kód:

 Sub Wait_Example2 () Application.Wait (Now () + TimeValue ("00:10:00")) End Sub 

Fontos, hogy a NOW () függvényt használja a pontos szüneteltetéshez, különben valószínű, hogy az Excel-munkafüzet éjfélig szünetel. A szünet módszerből azonban bármikor kijöhetünk az Esc vagy a Break gomb megnyomásával .

2. példa

Várjon 10 másodpercet minden alkalommal, amikor a hurok fut

A várakozási mód jól használható a hurkoknál. Vannak olyan helyzetek, amikor előfordulhat, hogy 10 másodpercet kell várni minden egyes ciklus futásakor. Nézze meg például az alábbi adatokat.

A Profit = (Értékesítés - Költség) kiszámításához hurkot szeretne létrehozni, és minden ciklus után 10 másodpercig várnia kell, hogy ellenőrizze, hogy az eredmény pontos-e vagy sem. Az alábbi kód ezt meg fogja tenni.

Kód:

 Alvárás_Példa3 () Dim k egész szám k = 2 - 9 celláig (k, 4). Érték = cellák (k, 2) - cellák (k, 3) alkalmazás. Várjon (Most () + TimeValue ("00:00 : 10 ")) Következő k Vége Sub 

Ez a kód soronként kiszámítja az eredmény oszlopot. Az első sor kitöltése után 10 másodpercet vár, mielőtt kiszámítja a következő sort.

VBA alvás vs VBA várakozás

VBA SLEEPVBA VÁR
Ez nem egy VBA beépített funkció, ezért speciális kódra van szüksége a funkció eléréséhez.Ez egy VBA beépített funkció, nem igényel külön kódot a funkció eléréséhez.
Az alvás ezredmásodperceket igényel.A várakozáshoz rendszeres időkeret szükséges.
Ezredmásodpercek alatt késleltethetjük a kódotCsak másodpercek alatt késhetünk.