habe eine Userform mit einer Textbox (TB9) in der die Uhrzeit erfasst werden soll (hh:mm).
Dann beim speichern wird dieser Wert im Format:
.Cells(varRow, 6) = Format(CDate(TB9.Value), "hh:mm") ' Uhrzeit
gespeichert.
Beim wieder anzeigen jedoch - steht eine Dezimalzahl mit vielen Komma-Stellen drin ?
Warum keine Stundenanzeige - Was muss ich tun ?
Gruß
Kay
Der verwendete Code von Hajo für die Eingabe und Änderung der TB9 auf Uhrzeit:
' Ereignis, welches vor der Anzeige der Eingabe in der Textbox ausgeführt wird
Private Sub TB9_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
Select Case KeyAscii
Case Asc("0") To Asc("9") ' Prüfung ob Zahl
Case Asc(":") ' Prüfung ob Doppelpunkt
If Len(TB9) = 0 Then ' Prüfung der Position, keine Eingabe vor der ersten _
Zahl
KeyAscii = 0 ' Eingabe löschen
Else
' nach dem 2. Doppelpunkt keinen weiteren Punkt zulassen
If Len(TB9) - Len(Application.Substitute(TB9, ":", "")) = 2 Then
KeyAscii = 0
ElseIf Len(TB9) > 1 Then
' keine 2 Doppelpunkte hintereinander, prüfen ob letztes Zeichen ein _
Doppelpunkt ist
If Mid(TB9, Len(TB9), 1) = ":" Then KeyAscii = 0
Else
' hinter der ersten Zahl wurde ein Punkt eingegeben, was korrekt ist
KeyAscii = Asc(":")
End If
End If
Case Else ' alle anderen Eingaben löschen
KeyAscii = 0
End Select
End Sub
' Ereignis, welches nach der Eingabe ausgelöst wird im Anschluss nach ...KeyPress
Private Sub TB9_Change()
If BoEnter = True Then Exit Sub ' Textbox wurde schon verlassen
If Len(TB9) = 2 Then ' es wurden 2 Zeichen eingegeben
If InStr(TB9, ":") = 0 Then ' prüfen ob schon ein Doppelpunkt eingegeben wurde
TB9 = TB9 & ":" ' Doppelpunkt ergänzen
End If
' ElseIf Len(TB9) = 5 Then ' eingegebene Zeichenkette ist 5 Zeichen lang
' If Len(TB9) - Len(Application.Substitute(TB9, ":", ""))
' Ereignis, welches beim Verlassen ausgelöst wird
Private Sub TB9_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If TB9 "" Then
BoEnter = True ' damit das Change Ereignis _
nicht ausgeführt wird
If Right(TB9, 1) = ":" Then ' das letzte Zeichen ist ein _
Doppelpunkt
TB9 = Mid(TB9, 1, Len(TB9) - 1) ' Doppelpunkt am Ende löschen
End If
If IsDate(TB9.Text) Then ' Prüfung ob die Eingabe ein _
Datum ist
' Prüfung ob Eingabe verschieden vom vorgegeben Format, dann Meldung
If Format(CDate(TB9.Value), "hh:mm") TB9 Then
MsgBox "Die Uhrzeit wurde übersetzt"
End If
TB9 = Format(CDate(TB9.Value), "hh:mm") ' Eingabe ins richtige Format umwandeln
Else
TB9 = "" ' Eingabe löschen da kein Datum
Cancel = True ' Focus auf das gleiche _
Steuerelement
End If
BoEnter = False ' Variable wieder zurü _
cksetzen für nächste Eingabe
End If
End Sub