Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

genaue Zeitmessung in VBA

Forumthread: genaue Zeitmessung in VBA

genaue Zeitmessung in VBA
20.01.2006 18:11:56
Günther
Hallo!
Ich möchte per VBA ermitteln, wie lange ein Vorgang (z.B. die Berechnung eines Makros) dauert. Das Ergebnis soll z.B. lauten 1,7 Sek oder 0,4 Sek.
Die VBA-Funktion Time scheint dafür ungeeignet, da sie nur auf ganze Sekunden genau ist. Welche Möglichkeiten gibt es, genauere Messungen durchzuführen?
Herzlichen Dank im Voraus!
Grüße Günther
Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: genaue Zeitmessung in VBA
20.01.2006 18:21:47
Heiko
Hallo Günther,
z.B. so:
Option Explicit
' Private_Declare_Funcction und der Rest gehört in eine Zeile !!!
Private Declare

Function GetTickCount Lib "kernel32" () As Long
Public lngTime As Long

Sub Test()
lngTime = GetTickCount
' Dein Code
MsgBox "Zeit = " & (GetTickCount - lngTime) / 1000
End Sub

Gruß Heiko
PS: Rückmeldung wäre nett
Anzeige
AW: genaue Zeitmessung in VBA
20.01.2006 18:30:49
Günther
genau das war's
Danke!
;
Anzeige

Infobox / Tutorial

Genaue Zeitmessung in VBA


Schritt-für-Schritt-Anleitung

Um die Zeitmessung in VBA zu realisieren, kannst Du die Funktion GetTickCount verwenden. Hier ist eine einfache Schritt-für-Schritt-Anleitung:

  1. Öffne den VBA-Editor in Excel mit ALT + F11.

  2. Füge ein neues Modul hinzu: Rechtsklick auf "VBAProject (DeineDatei.xlsm)" > Einfügen > Modul.

  3. Deklariere die Funktion GetTickCount:

    Private Declare Function GetTickCount Lib "kernel32" () As Long
  4. Schreibe Dein Makro, um die Zeit zu messen:

    Sub Test()
       Dim lngTime As Long
       lngTime = GetTickCount
       ' Dein Code hier
       MsgBox "Zeit = " & (GetTickCount - lngTime) / 1000 & " Sekunden"
    End Sub
  5. Führe das Makro aus, um die Zeit zu messen.

Mit dieser Methode kannst Du genauere Zeitmessungen in Excel VBA durchführen.


Häufige Fehler und Lösungen

  • Fehler: "Komponente nicht gefunden"

    • Lösung: Stelle sicher, dass die Deklaration der Funktion GetTickCount korrekt ist und sich im richtigen Modul befindet.
  • Fehler: Zeitmessung zeigt immer 0 an

    • Lösung: Überprüfe, ob Dein Code zwischen den beiden GetTickCount-Aufrufen tatsächlich Zeit benötigt. Füge eine Pause oder einen zeitintensiven Vorgang ein.

Alternative Methoden

Falls Du GetTickCount nicht verwenden möchtest, gibt es auch andere Möglichkeiten zur Zeitmessung:

  • VBA Timer: Diese Funktion liefert die Zeit in Sekunden seit Mitternacht.

    Sub ZeitMessenMitTimer()
      Dim startTime As Double
      startTime = Timer
      ' Dein Code hier
      MsgBox "Zeit = " & Timer - startTime & " Sekunden"
    End Sub
  • Excel-Funktion NOW(): Diese gibt das aktuelle Datum und die Uhrzeit zurück, kann jedoch nur für grobe Zeitmessungen verwendet werden.


Praktische Beispiele

Hier ein Beispiel für eine einfache Schleife, deren Ausführungszeit Du messen kannst:

Sub SchleifenZeitMessen()
    Dim lngTime As Long
    Dim i As Long
    lngTime = GetTickCount
    For i = 1 To 1000000
        ' Eine einfache Berechnung
        Dim x As Long
        x = i * 2
    Next i
    MsgBox "Zeit = " & (GetTickCount - lngTime) / 1000 & " Sekunden"
End Sub

In diesem Beispiel wird die Zeit gemessen, die benötigt wird, um eine Million Iterationen durchzuführen.


Tipps für Profis

  • Verwende GetTickCount für präzisere Messungen, wenn Du die Performance von Makros analysierst.
  • Kombiniere die Zeitmessung mit Application.ScreenUpdating = False, um die Ausführungsgeschwindigkeit zu erhöhen.
  • Achte darauf, dass GetTickCount seit Windows-Start zählt, was bedeutet, dass der Wert nach etwa 49,7 Tagen zurückgesetzt wird.

FAQ: Häufige Fragen

1. Wie genau ist die Zeitmessung mit GetTickCount?
GetTickCount misst die Zeit in Millisekunden und ist somit für die meisten Anwendungen ausreichend genau.

**2. Gibt es eine andere Möglichkeit zur Zeitmessung in Excel

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige