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 kód végrehajtását é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”, ahogy maga a név is mondja, a végrehajtandó makrokódot egy meghatározott időkereten belül tartja. Ennek a módszernek a használatával meg kell adnunk a kód szüneteltetésének idejét. A következőkben példákat fogunk látni.
A WAIT függvény szintaxisa a következő.

Meg kell említenünk, hogy a kódunknak mennyi ideig kell szünetelnie. Amint a végén láthatja, Boolean-t ír. 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 írja, és a megadott idő elérésekor az IGAZ értéket adja vissza.
Ez ellentétben áll 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
Példák az Excel VBA Wait Function használatára
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 14: 30-tól dolgozunk. Folyamatosan változik.
Tegyük fel, hogy bármikor futtatja a kódot. Várni akar 2 percet, hogyan hivatkozik erre a kódjában?
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ékeztetőül: a NOW () 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 a NOW () funkció használata a pontos szünethez. Ellenkező esetben valószínű, hogy az Excel-munkafüzet éjfélig szünetel. Azonban bármikor kijöhetünk a szünet módszerből 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 alkalommal, amikor a hurok fut. Nézze meg például az alábbi adatokat.

A Profit = (Értékesítés - Költség) kiszámításához létre kell hozni egy ciklust, és minden ciklus után 10 másodpercet várni 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 SLEEP | VBA 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ódot. | Csak másodpercek alatt késhetünk. |