VBA vänta och viloläge - pausa / fördröja VBA -kod

Denna handledning visar hur du pausar / fördröjer koden med hjälp av vänta och viloläge i VBA.

När vi skapar stora VBA -program som utför många beräkningar, eller kanske till och med kallar ett externt program för att köra, kan vi kräva att vår VBA -kod slutar köra under en viss tid medan den externa processen pågår. VBA har några metoder tillgängliga för att uppnå detta.

Användning av Application.Wait Method

Om vi ​​behöver pausa vårt makro under en tid eller tills en viss tid har uppnåtts innan vi utför nästa steg kan vi använda Ansökan. Vänta metod. Detta kan till exempel vara användbart om vi har automatiserat en inloggningsprocess till en webbplats och måste vänta några sekunder tills sidan laddas innan vårt makro fortsätter att köras.

Vänta 1 sekund

Om den här raden ingår i ditt makro kommer dess körning att pausas i ungefär 1 sekund:

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

Vänta tills

I vissa fall måste du vänta till en viss tid. Med den här raden nedan kommer ditt makro inte att fortsätta före 9:00:

1 Ansökan.Vänta "09:00:00"

Observera att Ansökan. Vänta accepterar inte förseningar på mindre än 1 sekund.

VBA -programmering | Kodgenerator fungerar för dig!

Användning av sömnmetod

Om du behöver ett mer exakt sätt att pausa ditt makro kan du använda Sleep -metoden.

Sleep är en Windows API -funktion, det vill säga det är inte en del av VBA. Den kan nås genom att använda en särskild deklaration.

Om du använder 64-bitarsversionen av Microsoft Office kan du infoga följande uttalande i en ny modul eller i början av modulen (inte direkt i delrutan) som du vill använda vilofunktionen i:

1 Public Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal Milliseconds As LongPtr)

Med 32-bitarsversionen använder du den här raden:

1 Public Declare Sub Sleep Lib "kernel32" (ByVal Milliseconds As LongPtr)

Efter att ha deklarerat sömnfunktionen har du tillgång till den i dina underprogram så här:

1 Sov 10000

Med den här raden ovanför kommer ditt makro att pausas i 10 000 millisekunder, dvs 10 sekunder.

Använda en loop med Do Events

Den stora nackdelen med att använda vänta och viloläge är att användaren inte kan göra någonting i Excel medan han väntar på att makrot ska fortsätta. En användare kan tro att Excel har slutat svara och medan användaren sedan kan använda Ctl+Break för att avbryta makrot, besegrar detta syftet med att sätta en paus i makrot till att börja med.

För att övervinna detta problem kan vi använda en loop med en metod som heter DoEvents.

1234567 Public Sub Test ()Dim i As LongFör i = 1 Till 20000Område (“A1”). Värde = iDoEventsNästa iAvsluta Sub

Medan Excel kör makrot ovan kan användaren fortsätta att interagera med Excel - vi kan till exempel ändra flikar eller formatera celler - i grunden fortsätter makrot att köras men Excel -skärmen är inte frusen. Vi kan använda en liknande loop för att skapa en timerfunktion i Excel och införliva DoEvents metod för att frigöra skärmen medan timern är igång.

Du kommer att bidra till utvecklingen av webbplatsen, dela sidan med dina vänner

wave wave wave wave wave