HERBERS
Excel-Forum
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Entdecke rund 2 Millionen Excel-Lösungen im
Forumsarchiv
Forumbeitrag
Excel-Version des Fragestellers:
365 privat
Erfahrungslevel des Fragestellers:
Basiskenntnisse in VBA
Daniel
18.05.2026 12:59:24
AW: VBA - ungewollte Zeitrechnung
Hi

TIMER zählt die Sekunden ab Mitternacht.

Wenn du über Mitternacht damit die Zeit misst, musst du das berücksichtigen.

Wenn das Makro nicht länger als 24h läuft, dann kannst du so korrigieren und diese Zeile vor der Berechnung der Dauer einfügen;

If Startzeit > Endzeit then Endzeit  = Endzeit + 86400


Wenn es länger laufen kann, würde ich Start- und Endzeit als Date deklarieren und mit NOW befüllen (NOW ist Datum + Uhrzeit)

Gruß Daniel
Als Antwort auf diesen Beitrag
Christian
18.05.2026 12:45:17
VBA - ungewollte Zeitrechnung
Hallo, ich bitte um eure Hilfe. es geht mir um folgendes eigentlich unspektakuläres Makro mit Zeitmessung. Wenn ich das Makro vor Mitternacht starte und es nach Mitternacht endet, wird eine völlig unrealistische Zeitangabe ins Blatt Hilfe geschrieben. Kann ein geschultes Auge bitte mal schauen, woran das liegen könnte und mein Problem beheben? Wenn das Makro am selben tag startet und endet, ist die Zeitangabe realistisch.

Danke
Christian

Sub MakroAuswahlStarten()


Dim auswahl As Long
Dim startZeit As Double
Dim endZeit As Double
Dim DauerInSekunden As Double
Dim DauerAlsZeit As Date
Dim MsgResult As VbMsgBoxResult

auswahl = InputBox("Welches Makro möchtest du ausführen?" & vbCrLf & _
"1: erstesMakro" & vbCrLf & _
"2: zweitesMakro" & vbCrLf & _
"3: drittesMakro" & vbCrLf & _
"4: viertesMakro" & vbCrLf & _
"5: fünftesMakro" & vbCrLf & _
"6: sechstesMakro" & vbCrLf & _
"7: siebtesMakro" & vbCrLf & _
"8: achtesMakro" & vbCrLf & vbCrLf & _
"Gib die entsprechende Zahl ein:", "Makro-Auswahl", "1")

If auswahl = 0 Then Exit Sub
If auswahl < 1 Or auswahl > 8 Then
MsgBox "Ungültige Auswahl. Bitte gib eine Zahl zwischen 1 und 8 ein.", vbCritical, "Fehler bei der Auswahl"
Exit Sub
End If

MsgResult = MsgBox("Möchtest du die Ausführungszeit messen?", vbYesNo + vbQuestion, "Zeitmessung")

If MsgResult = vbYes Then startZeit = Timer

Select Case auswahl
Case 1
Call ErstesMakro
Case 2
Call zweitesMakro
Case 3
Call drittesMakro
Case 4
Call viertesMakro
Case 5
Call fünftesMakro
Case 6
Call sechstesMakro
Case 7
Call siebtesMakro
Case 8
Call achtesMakro
Case Else
Exit Sub
End Select

On Error GoTo 0

If MsgResult = vbYes Then
endZeit = Timer
DauerInSekunden = endZeit - startZeit
DauerAlsZeit = DauerInSekunden / 86400
Worksheets("Hilfe").Range("D17").Value = Format(DauerAlsZeit, "hh:mm:ss")
End If

Exit Sub

FehlerHandler:
MsgBox "Fehler beim Ausführen des Makros. Bitte stelle sicher, dass das ausgewählte Makro existiert.", vbCritical, "Fehler"

End Sub


Folgenachrichten
Antwort auf Beitrag erstellen
Bitte einen Anwendernamen ohne @ eingeben.
Bitte das Passwort eingeben.
Bitte eine gültige E-Mail-Adresse eingeben.
Bitte einen Betreff eingeben.
Weitere Optionen
Aktivieren, wenn die Frage/der Beitrag noch nicht beantwortet wurde und unter Listen > Offene Threads erscheinen soll.
Beispieldatei hochladen

Bitte einen Nachrichtentext eingeben.