Option Explicit
Public sgStart As Single, sgStop As Single, sgTime As Single
Public dbStart As Double, dbStop As Double, dbTime As Double
Public lgStart As Long, lgStop As Long, lgTime As Long
Sub TimerStart()
sgStart = Timer
dbStart = Timer
lgStart = Timer
'UserForm1.Caption = "läuft ..."
End Sub
Sub TimerStop()
sgStop = Timer
dbStop = Timer
lgStop = Timer
TimerTime
End Sub
Sub TimerTime()
sgTime = sgStop - sgStart
dbTime = dbStop - dbStart
lgTime = lgStop - lgStart
MsgBox _
"Single " & sgTime & vbNewLine & _
"Double " & dbTime & vbNewLine & _
"Long " & lgTime & vbNewLine, , "Sekunden"
'UserForm1.Caption = "UserForm1"
End Sub
Der Aufruf klappt über Buttons in einer UserForm (einkommentieren) oder einfach zu Beginn/Ende der zu messenden Prozeduren gesetztem Aufruf und liefert eine msgbox mit den Ergebnissen dreier Genauigkeiten.
Viel Spaß!
d'r Bastler von den VBAsteleien.de Win 10 + Office 2019 pro [32] & Win11 + Office 2024 pro [64] & macOS.X15 + Office2019 pro & Android12 & XL365
Auch Dir natürlich ein herzliches Willkommen hier!
Deinen Link habe ich mir angeschaut und frage mich: Wieso so viel Code für eine Zeitmessung, die sich mit wenigen Zeilen realisieren lässt?
Drei Variablen, eine für den Start, eine für das Ende, eine für die Zeitspanne (die unterschiedlichen Genauigkeiten hatte ich in meine Code berücksichtigt) und schon ist's erledigt.
Lässt Du mich die Vorteile Deines Vorschlags lernen?
Lieben Dank!
d'r Bastler von den VBAsteleien.de Win 10 + Office 2019 pro [32] & Win11 + Office 2024 pro [64] & macOS.X15 + Office2019 pro & Android12 & XL365
Dein Code reicht völlig aus, wenn Du lediglich eine Routine oder Code Sequenz untersucht.
Aber wenn Du z. B. 10 Subs hast, die sich gegenseitig zigtausendmal aufrufen (müssen), dann willst Du nicht nur die Zeiten, sondern auch deren Aufrufhäufigkeiten inklusive Zusammenfassung.
Und genau für solche aufwändigeren Analysen ist die Codeklasse sehr gut und einfach zu nutzen.
Viele Grüße,
Bernd
Folgende Benutzer bedankten sich beim Autor Sulprobil für den Beitrag: