Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Ausführungszeit messen?

Forumthread: Ausführungszeit messen?

Ausführungszeit messen?
02.10.2002 12:26:29
Markus
Hi,

das ist wieder eine newbie Frage:
Ich möchte die Zeit messen, die ein Excel Makro zur Ausführung braucht. Das Problem: dieses Makro läuft sehr lang, es läuft immer über Nacht, über Mitternacht hinweg und deswegen komme ich mit der Startzeit = timer, Ende = timer, Ausführungszeit = Ende - Startzeitnicht zurande. Bei anderen Sprache gibt es eine Zeit-Varibale, die die Sekunden seit einem festen Datum (e.g. 01.01.1904) angibt, vielleicht weiss jemand, ob es das in Excel auch gibt - oder wie man sich das aus TIME und DATE zusammenbasteln kann?

Danke im Voraus,

Markus

Anzeige

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Re: Ausführungszeit messen?
02.10.2002 12:57:53
Volker
Hallo Markus,

hier bieten sich in VBA die Funtionen:
NOW und TimeSerial an. Beispiele findest du auch in der VBA-Hilfe

Gruss Volker

Re: Ausführungszeit messen?
02.10.2002 13:08:36
Volker
...und ein Muster findest du hier unter:
https://www.herber.de/forum/archiv/28to32/t30862.htm

Danke, aber dass misst nicht über Mitternacht hinw
02.10.2002 13:35:51
Markus
Volker,

danke für den Link, aber wenn ich den Code richtig verstehe, dann wird das Makro nicht korrekt messen, wenn es über die Datumsgrenze hinweg geht, oder? Und dgenau das brauche ich....

Code:
Sub timetest()
' aus Herber Forum soll messen!
Dim datStart As Date
Dim datEnde As Date
Dim dblSekunde As Double
Dim dblMinute As Double
Dim dblStunde As Double

datStart = Now()
dblStunde = Hour(Now())
dblMinute = Minute(Now())
dblSekunde = Second(Now()) + 10
WarteZeit = TimeSerial(dblStunde, dblMinute, dblSekunde)
Application.Wait WarteZeit
datEnde = Now()
laufzeit = Format(datEnde - datStart, "hh:mm:ss")
MsgBox "Aktualisierung beendet" & Chr(13) & _
"Bearbeitungszeit " & laufzeit & ""
End Sub

Anzeige
Re: Danke, aber dass misst nicht über Mitternacht hinw
02.10.2002 14:10:11
Markus
Danke für die Hilfe,

die Lösung, die ich brauche habe ich jetzt endlich gefunden: Intern rechnet Excel alle zeitangaben mit TIME und DATE nach 1.1.1900 oder 2.01.1904-Standard, wenn man TIME und DATE in mit Standard formatierten Zellen schreiben lässt wird das deutlich und damit kann man auch rechnen ...

markus

Anzeige
Anderer Vorschlag
02.10.2002 14:10:21
Martin Beck
Hallo Markus,

versuche mal

Das Makro läuft auf meinem Rechner ca. 3 Minuten. Ich habe die Systemzeit auf 23:59 gestellt und das Ergebnis wurde in Diff korrekt berechnet und dargestellt.

Gruß
Martin Beck

Re: Anderer Vorschlag
02.10.2002 14:26:52
Markus
Martin!,

super! - funktioniert und ist genau dass, was ich suche - nur das vielleicht auch Tage in die Ausgabe rein müssen, aber das schaffe ich dann schon.

Gruss,

Markus

Anzeige
Re: Anderer Vorschlag
02.10.2002 14:56:07
Martin Beck
Hallo Markus,

bei einer Laufzeit von mehr als einem Tag würde ich mir eher Gedanken über die Verbesserung der Performance machen ;-)

Gruß
Martin Beck

Re: Anderer Vorschlag
02.10.2002 15:02:24
Markus
Hi Martin,


das machen wir auch noch (Stichwort: keine Schleifen etc.), aber das Makro läuft über eine sehr grosse SQl Datenbank und das kann es nur in der nacht tun....
Danke für Deine Hilfe,

markus

Anzeige
Re: Anderer Vorschlag
02.10.2002 15:04:44
Stefan
Hallo,

probiers doch mal mit

Declare Function GetTime Lib "winmm.dll" Alias "timeGetTime" () As Long

damit kannst du dann eine Funktion timeGetTime verwenden, welche die Zeit seit dem Rechnereinschalten in ms zurückgibt.


Sollte daher ein paar Wochen funktionieren befor Long überläuft.



Anzeige
;
Anzeige

Infobox / Tutorial

Ausführungszeit von Excel-Makros messen


Schritt-für-Schritt-Anleitung

Um die Ausführungszeit eines Makros in Excel VBA zu messen, kannst du die folgenden Schritte befolgen:

  1. Öffne den VBA-Editor: Drücke ALT + F11 in Excel.
  2. Erstelle ein neues Modul:
    • Klicke auf Einfügen > Modul.
  3. Schreibe das Makro: Verwende den folgenden Code, um die Ausführungszeit zu messen, auch wenn das Makro über Mitternacht läuft.
Sub timetest()
    Dim datStart As Date
    Dim datEnde As Date
    Dim laufzeit As String

    datStart = Now()
    ' Hier kommt dein Code, der ausgeführt werden soll
    Application.Wait (Now + TimeValue("0:00:10")) ' Beispiel-Wartezeit von 10 Sekunden
    datEnde = Now()

    laufzeit = Format(datEnde - datStart, "hh:mm:ss")
    MsgBox "Aktualisierung beendet" & Chr(13) & _
           "Bearbeitungszeit: " & laufzeit
End Sub
  1. Führe das Makro aus: Drücke F5 oder gehe zu Run > Run Sub/UserForm.

Häufige Fehler und Lösungen

  • Problem: Das Makro misst die Zeit nicht korrekt über Mitternacht.

    • Lösung: Stelle sicher, dass du die Now() Funktion verwendest, um das Start- und Enddatum korrekt zu erfassen. Das Format hh:mm:ss wird auch über Datumsgrenzen hinweg korrekt berechnet.
  • Problem: Fehlermeldung beim Ausführen des Makros.

    • Lösung: Überprüfe, ob alle Variablen richtig deklariert sind und dass du keine ungültigen Funktionen verwendest. Ein häufiger Fehler ist die Verwendung einer falschen Zeitformatierung.

Alternative Methoden

Eine weitere Methode, um die Ausführungszeit eines Makros zu messen, ist die Verwendung der GetTime Funktion aus der Windows Multimedia-Bibliothek. So funktioniert es:

  1. Füge die Deklaration hinzu:
Declare Function GetTime Lib "winmm.dll" Alias "timeGetTime" () As Long
  1. Verwende die Funktion im Makro:
Sub MakroMessen()
    Dim startTime As Long
    Dim endTime As Long
    Dim elapsedTime As Long

    startTime = GetTime()
    ' Hier kommt dein Code
    Application.Wait (Now + TimeValue("0:00:10")) ' Beispiel-Wartezeit
    endTime = GetTime()

    elapsedTime = endTime - startTime
    MsgBox "Bearbeitungszeit: " & elapsedTime & " ms"
End Sub

Praktische Beispiele

Hier ist ein einfaches Beispiel, das zeigt, wie du die vba zeit messen kannst:

Sub BeispielMakro()
    Dim startTime As Double
    Dim endTime As Double

    startTime = Timer
    ' Komplexer Code hier
    Application.Wait (Now + TimeValue("0:00:10")) ' Beispiel-Wartezeit
    endTime = Timer

    MsgBox "Das Makro hat " & (endTime - startTime) & " Sekunden gedauert."
End Sub

Dieses Beispiel zeigt, wie einfach es ist, die Ausführungszeit deines Makros zu messen, indem du die Timer Funktion verwendest.


Tipps für Profis

  • Vermeide Schleifen: Wenn möglich, optimiere deinen Code, um lange Laufzeiten zu vermeiden.
  • Verwende Application.ScreenUpdating = False: Deaktiviere die Bildschirmaktualisierung, um die Ausführungsgeschwindigkeit zu verbessern.
  • Behalte die Performance im Auge: Überwache die Laufzeit deiner Makros regelmäßig, um Engpässe frühzeitig zu erkennen.

FAQ: Häufige Fragen

1. Wie messe ich die Zeit eines Makros, das über Nacht läuft? Um die Zeit eines Makros zu messen, das über Mitternacht läuft, kannst du die Now() Funktion verwenden, um das Start- und Enddatum zu erfassen. Achte darauf, dass du die Zeit im richtigen Format anzeigst.

2. Gibt es eine einfache Möglichkeit, die Ausführungszeit zu messen? Ja, du kannst die Timer Funktion nutzen, um die Ausführungszeit eines Makros in Sekunden zu messen. Verwende startTime = Timer und endTime = Timer, um die Differenz zu berechnen.

3. Welche Funktion ist besser für die Leistungsüberwachung? Die GetTime Funktion ist nützlich für detaillierte Messungen, jedoch ist die Verwendung von Now() und Timer in den meisten Fällen ausreichend und einfacher zu implementieren.

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