VBA várakozási és alvási funkciók - Szünet / késleltetés VBA kód

Ez az oktatóanyag bemutatja, hogyan lehet szüneteltetni / késleltetni a kódot a VBA Várakozás és Alvás funkcióival.

Amikor nagyméretű VBA programokat hozunk létre, amelyek sok számítást végeznek, vagy esetleg külső programot hívnak futtatásra, előfordulhat, hogy megköveteljük, hogy a VBA kódunk meghatározott időre leálljon, amíg a külső folyamat zajlik. Ennek eléréséhez a VBA számos módszert kínál.

Alkalmazás használata. Várjon módszer

Ha a következő lépés végrehajtása előtt szüneteltetnünk kell makrónk futását, vagy amíg el nem éri a megadott időt, használhatjuk a Alkalmazás. Várjon módszer. Ez például akkor lehet hasznos, ha automatizáltuk a bejelentkezési folyamatot egy webhelyre, és várnunk kell néhány másodpercet, amíg az oldal betöltődik, mielőtt a makró tovább futna.

Várjon 1 másodpercet

Ha ezt a sort beilleszti a makróba, akkor futása körülbelül 1 másodpercre szünetel:

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

Várj amíg

Bizonyos esetekben meg kell várnia egy bizonyos időpontot. Ezzel a sorral a makró nem indul 9 óra előtt:

1 Alkalmazás. Várjon "09:00:00"

Kérjük, vegye figyelembe, hogy a Alkalmazás. Várjon nem fogadja el az 1 másodpercnél rövidebb késéseket.

VBA programozás | A kódgenerátor működik az Ön számára!

Alvási módszer alkalmazása

Ha pontosabb módra van szüksége a makró szüneteltetéséhez, használhatja az Alvás módszert.

Az alvás egy Windows API funkció, vagyis nem része a VBA -nak. Egy speciális nyilatkozat használatával érhető el.

Ha a Microsoft Office 64 bites verzióját használja, akkor az alábbi utasítást beszúrhatja egy új modulba vagy annak a modulnak az elejére (nem közvetlenül az alprogramba), amelyben használni szeretné az Alvó funkciót:

1 Nyilvános nyilatkozat PtrSafe Sub Sleep Lib "kernel32" (ByVal Milliseconds As LongPtr)

32 bites verzió esetén használja ezt a sort:

1 Nyilvános nyilatkozat az alvó alvó állapotról "kernel32" (ByVal Milliseconds As LongPtr)

Az Alvás funkció deklarálása után az alábbi alprogramokban fér hozzá:

1 Aludj 10 000

Ezzel a sorral a makró 10 000 milliszekundumra, azaz 10 másodpercre szünetel.

Loop használata eseményekkel

A Várakozás és Alvás módszerek használatának nagy hátránya, hogy a felhasználó a makró folytatására várva nem tehet semmit az Excelben. A felhasználó azt gondolhatja, hogy az Excel nem válaszolt, és a felhasználó ezután használhatja Ctl+szünet hogy megszakítsa a makrót, ez legyőzi azt a célt, hogy kezdetben szünetet helyezzen a makróba.

Ennek a problémának a kiküszöbölésére használhatunk hurkot a DoEvents nevű módszerrel.

1234567 Nyilvános alvizsgálat ()Dim i As LongI = 1 és 20000 közöttTartomány („A1”). Érték = iDoEventsKövetkező iEnd Sub

Most, amíg az Excel futtatja a fenti makrót, a felhasználó folytathatja az Excel -sel való interakciót - például lapokat cserélhetünk vagy cellákat formázhatunk - alapvetően a makró továbbra is fut, de az Excel képernyő nincs lefagyva. Hasonló ciklus segítségével létrehozhatunk egy időzítő funkciót az Excelben, és beépíthetjük a DoEvents módszer, amellyel feloldhatja a képernyőt, amikor az időzítő fut.

Segít a fejlesztés a helyszínen, megosztva az oldalt a barátaiddal

wave wave wave wave wave