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
RPP63
18.05.2026 13:15:24
AW: VBA - ungewollte Zeitrechnung
Moin Christian!
Aus der VBA-Hilfe zur Timer-Funktion:
https://learn.microsoft.com/de-de/office/vba/language/reference/user-interface-help/timer-function?

»Gibt einen Single-Wert zurück, der die Anzahl der Sekunden angibt, die seit Mitternacht vergangen sind

Heißt:
5 vor 24 ist 86100 (Start)
5 nach 0 ist 300 (Ende)
Du benötigst nicht 300 - 86100,
sondern 300 + 86400 - 86100

In Excel würde ich REST() nehmen.
Der Modulo-Operator in VBA funktioniert aber anders …

Deshalb mal kurz aus dem Ärmel:
Ich prüfe per Vergleich, ob Ende < Start
True entspricht in VBA -1
Statt + 86400
allgemein dann
Ende - (Ende<Start)*86400 - Start

Gruß Ralf
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.