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

Forumthread: Format hh:mm

Format hh:mm
01.08.2018 11:03:26
Berg
Hallo,
ich bitte um Hilfe bei der Formatierung von Werten.
Über eine Userform gebe ich für eine Stundenerfassung die monatliche Arbeitszeit in Form von z.B. 40:00 Stunden pro Monat ein.
Dabei prüfe ich direkt in der Textbox ob die Werte richtig eingeben werden über:
Private Sub TextBox3_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If TextBox3 = "" Then Exit Sub
If Not IsDate(Me.TextBox3) Then
MsgBox ("Eingabe ist nicht vom Type Time!")
TextBox3.BackColor = RGB(100, 100, 199)
Else
TextBox3.BackColor = RGB(255, 255, 255)
TextBox3 = Format(TextBox3, "hh:mm")
End If
End Sub
Ich glaube dass "isDate" hier falsch ist da ich nicht über die 24:00 hinaus komme. Gibt es hier irgendwas mit "Time" oder so?
Wenn ich die Daten dann in der Tabelle abspeicher, möchte ich dass der Eingabewert aus der Textbox auch im Format 40:00 in die Zelle geschrieben wird (weil die Stunden dann später summiert werden).
Dies hab ich wie folgt probiert aber damit komme ich auch nicht über 24:00 Stunden hinweg (Whs. das falsche Format)
Tabelle3.Cells(lZeile, 5).Value = CDate(TextBox3)
Tabelle3.Cells(lZeile, 5).NumberFormat = "hh:mm"
Weis hier jemand wie man das richtig macht?
Vorab allerbesten Dank für die Hilfe!
VG Berg
Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Format hh:mm
01.08.2018 11:09:33
Hajo_Zi
Tabelle3.Cells(lZeile, 5).NumberFormat = "[hh]:mm"
da über 24 Stunden.
Isdate ist korrekt.

Beiträge von Werner, Luc, robert, J.O.Maximo und folgende lese ich nicht.
AW: Format hh:mm
01.08.2018 11:24:45
Luschi
Hallo Hajo,
schade, daß Dich Infos über dieses Thema in Excel-Büchern nicht die Bohne interessieren,
denn dann wüßtest Du:
Tabelle3.Cells(lZeile, 5).NumberFormat = "[h]:mm"
korrekt ist.
siehe: 'Excel programmieren' von Michael Kofler, Ralf Nebelo, Hanser Verlag, 2014, Seite 235.
Gruß von Luschi
aus klein-Paris
Anzeige
AW: Format hh:mm
01.08.2018 11:33:45
Berg
Okay, erstmal danke.
Und was muss ich in meiner Vorabprüfung (Code unten) ändern sodass er mehr als 24:00 Stunden zulässt?
Weil wenn ich schreibe:
TextBox3 = Format(TextBox3, "[hh]:mm") --> komme trotzdem nicht über 24:00 Stunden
TextBox3 = NumberFormat(TextBox3, "[hh]:mm") --> Fehler!
Private Sub TextBox3_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If TextBox3 = "" Then Exit Sub
If Not IsDate(Me.TextBox3) Then
MsgBox ("Eingabe ist nicht vom Type Time!")
TextBox3.BackColor = RGB(100, 100, 199)
Else
TextBox3.BackColor = RGB(255, 255, 255)
TextBox3 = Format(TextBox3, "hh:mm")
End If
End Sub

Anzeige
AW: Format hh:mm
01.08.2018 11:54:51
Hajo_Zi
schreibe es in die Zelle und lese .Text aus
Gruß Hajo
AW: Format hh:mm
01.08.2018 12:31:15
Berg
Hä? Was soll ich machen?
Ich will eigentlich nur dass in TextBox3 nichts ausser hh:mm eingetragen wird.
Das möchte ich abfangen. Und mit hh:mm will ich auch über 24:00 Stunden hinauskommen z.B. 103 Stunden.
Anzeige
AW: Format hh:mm
01.08.2018 13:25:46
Berg
Weis jemand wie das geht?
AW: Format hh:mm
01.08.2018 13:57:24
Rudi
Hallo,
eine Möglichkeit:
Private Sub TextBox3_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Dim tmp, bolNoTime As Boolean
If TextBox3 = "" Then Exit Sub
tmp = Split(TextBox3, ":")
If UBound(tmp) = 1 Then
bolNoTime = Val(tmp(1)) > 60
Else
bolNoTime = True
End If
If bolNoTime Then
MsgBox ("Eingabe ist keine Zeit!")
TextBox3.BackColor = RGB(100, 100, 199)
Cancel = True
Else
TextBox3.BackColor = RGB(255, 255, 255)
End If
End Sub

Gruß
Rudi
Anzeige
AW: Format hh:mm
01.08.2018 14:22:35
Berg
Hallo Rudi,
super vielen Dank für deinen Code. Kann man noch irgendwie ergänzen wenn man eingibt z.B: "1:" dass er dann "01:00" oder aus "2:2" dann "02:20" beim verlassen der Textbox draus macht.
AW: Format hh:mm
02.08.2018 14:48:07
Hajo_Zi
Ein Beitrag in offen reicht, wie schon mitgeteilt.
Gruß Hajo
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Formatierung von Uhrzeiten in Excel: hh:mm und mehr


Schritt-für-Schritt-Anleitung

  1. Erstelle eine Userform: Füge eine TextBox hinzu, in der die Eingabe der Arbeitszeit erfolgt.

  2. VBA-Code für die Eingabekontrolle: Verwende den folgenden VBA-Code, um sicherzustellen, dass die Eingaben im Format hh:mm erfolgen:

    Private Sub TextBox3_Exit(ByVal Cancel As MSForms.ReturnBoolean)
       If TextBox3 = "" Then Exit Sub
       If Not IsDate(Me.TextBox3) Then
           MsgBox ("Eingabe ist nicht vom Type Time!")
           TextBox3.BackColor = RGB(100, 100, 199)
       Else
           TextBox3.BackColor = RGB(255, 255, 255)
           TextBox3 = Format(TextBox3, "[hh]:mm")
       End If
    End Sub
  3. Speichere die Eingaben im richtigen Format: Um sicherzustellen, dass auch Werte über 24 Stunden gespeichert werden, setze das NumberFormat der Zelle auf [hh]:mm:

    Tabelle3.Cells(lZeile, 5).NumberFormat = "[hh]:mm"
    Tabelle3.Cells(lZeile, 5).Value = TextBox3

Häufige Fehler und Lösungen

  • Problem: Eingaben über 24 Stunden werden nicht akzeptiert.

    • Lösung: Stelle sicher, dass du das NumberFormat auf [hh]:mm setzt, um Werte über 24:00 zu ermöglichen.
  • Problem: IsDate funktioniert nicht wie gewünscht.

    • Lösung: Verwende einen anderen Ansatz zur Validierung der Eingabe, beispielsweise mit Split:
    Dim tmp, bolNoTime As Boolean
    tmp = Split(TextBox3, ":")
    If UBound(tmp) = 1 Then
       bolNoTime = Val(tmp(1)) > 60
    End If

Alternative Methoden

Anstelle der Verwendung von IsDate kannst du die TextBox-Eingaben direkt analysieren. Ein einfacher Ansatz wäre, die Eingaben mit Regex zu validieren oder die Eingabe in Stunden und Minuten zu splitten und dann zu formatieren.


Praktische Beispiele

  • Eingabe von 40:00 Stunden: Wenn der Benutzer 40:00 in die TextBox eingibt, wird dies korrekt als 40:00 in die Zelle geschrieben, wenn das NumberFormat wie oben beschrieben gesetzt ist.

  • Umwandlung von 1:2 in 01:02:

    Private Sub TextBox3_Exit(ByVal Cancel As MSForms.ReturnBoolean)
       If TextBox3 Like "*:*" Then
           Dim parts As Variant
           parts = Split(TextBox3, ":")
           If UBound(parts) = 1 Then
               TextBox3 = Format(Val(parts(0)), "00") & ":" & Format(Val(parts(1)), "00")
           End If
       End If
    End Sub

Tipps für Profis

  • Nutze [hh]:mm Formatierung in Excel, um die korrekte Darstellung von Arbeitszeiten zu gewährleisten, insbesondere wenn diese über 24 Stunden hinausgehen.
  • Halte die Eingaben in der TextBox einfach und klar, um Missverständnisse zu vermeiden. Ein Hinweistext kann hilfreich sein.
  • Überlege, zusätzliche Validierungen einzubauen, um sicherzustellen, dass nur gültige Zeitformate akzeptiert werden.

FAQ: Häufige Fragen

1. Wie kann ich sicherstellen, dass die Eingabe nur im Format hh:mm erfolgt?
Du kannst die Eingabe mit einem VBA-Skript validieren, das prüft, ob die Eingabe dem erwarteten Format entspricht.

2. Was ist der Unterschied zwischen hh:mm und [hh]:mm?
hh:mm ist für normale Zeitangaben, während [hh]:mm es dir ermöglicht, Stunden über 24 darzustellen.

3. Wie kann ich die Eingabe in der TextBox automatisch formatieren?
Verwende den Exit-Event der TextBox, um die Eingabe beim Verlassen der Box zu formatieren, beispielsweise in hh:mm.

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