VBA -timerfunktionerna returnerar antalet sekunder som har förflutit sedan midnatt den aktuella dagen (returneras som en enda datatyp).
Använda VBA -timerfunktionen
Följande kod visar hur du använder VBA -timerfunktionen för att avgöra hur många sekunder som har gått sedan midnatt, när koden körs:
12345678 | Sub UsingTheVBATimerFunction ()Dim secondsSince As SinglesecondsSince = Timer ()Felsök. Skriv ut sekunder sedanAvsluta Sub |
Resultatet är:
Använd VBA -timer för att få Faktisk tid
Du kan konvertera de sekunder som returneras från timerfunktionen till hh: mm: ss -format för att se den verkliga tiden med hjälp av följande kod:
123456789101112131415 | Sub GettingTheActualTime ()Dim secondsSince As SingleDim cTime As DoubleDim theActualTime som variantsecondsSince = Timer ()cTime = secondsSince / (86400)theActualTime = Format (cTime, "hh: mm: ss")MsgBox "Tiden som har gått sedan midnatt i sekunder är" & "" & sekunderSedan & vbNewLine & _"Den faktiska tiden är:" & "" & theActualTimeAvsluta Sub |
Resultatet är:
Ta ett avsnitt i VBA -koden
Om du vill benchmarka omskriven kod eller debattera "snabbare" metoder i VBA kan du använda VBA: s inbyggda timer. Att ställa in en variabel som är lika med timern i början av din kod och subtrahera denna från timern i slutet ger dig en bra uppskattning hur lång tid en kod tar att köra.
Prestanda kan påverkas av att andra program körs eller försöker köra medan ditt makro är aktivt, bland annat.
Följande exempel användes för att se hur lång tid det skulle ta att skriva ordet "test" till cell A1 på Sheet1 en halv miljon gånger. Det tog 21 sekunder på min maskin.
123456789101112131415161718 | Sub BenchMark ()Dim Count Så längeDim BenchMark As DoubleBenchMark = Timer'Start av kod att testaFör räkning = 1 till 500000Sheet1.Cells (1, 1) = "test"Nästa räkning'Kodens slut att testaMsgBox Timer - BenchMarkAvsluta Sub |
Om koden körs långsamt kan du försöka påskynda den genom att inaktivera skärmuppdatering. För att hålla Excel -skärmen aktiv medan timern är igång kan vi infoga DoEvents -metoden i koden.