Supportnet / Forum / Tabellenkalkulation
Zeit ohne Doppelpunkt
Frage
Hallo alle.
Habe ein Problem mit der Zeiteingabe. Ich verwende folgenden Code den ich im Internet gefunden habe., um keinen Doppelpunkt eingeben zu müssen.
Das Problem damit ist, dass ich erstens weil ich VBA Neuling bin den Code nicht verstrehe und zweitens:
der Code funktioniert zwar,nur leider sind die Zeiten dann in
einem Format, mit dem man nicht rechnen kann. Ich denke es liegt daran, dass das Ergebnis als Text gespeichert wird.
Weiss jemand ob man den code so ändern kann, dass die Zeit im Zeitformat herauskommt oder geht das so nicht?
Unten steht der code den ich verwende.
Private Sub txtdeptime_afterupdate()
Dim a
On Error GoTo fehlerbehandlung
a = txtdeptime ´Target.Value2
If a = "" Then Exit Sub
If Not (IsNumeric(a) Or IsDate(a)) Then Exit Sub
a = String(4 - Len(a), Asc("0")) & a
a = TimeSerial(Left$(a, Len(a) - 2), Right$(a, 2), 0)
Application.EnableEvents = False
Target.Value = a
Target.NumberFormat = "hh:mm"
fehlerbehandlung:
Application.EnableEvents = True
txtdeptime = FormatDateTime(a, vbShortTime)
End Sub
Danke
Antwort 1 von Coolpix
hallo CGAGLEX
hab das Markro etwas angepaßt.
Sollte jetzt funktionieren...
Feedback fänd ich klasse
Greetings ;-)
hab das Markro etwas angepaßt.
Sollte jetzt funktionieren...
Private Sub Worksheet_Change(ByVal Target As Range)
Dim zeile As Integer, A
If Not Intersect(Target, Range("A:A")) Is Nothing Then ´# Spalte festlegen, die geprüft wird
On Error GoTo fehlerbehandlung
A = Target.Value
If A = "" Then Exit Sub
If Not (IsNumeric(A) Or IsDate(A)) Then Exit Sub
A = String(4 - Len(A), Asc("0")) & A
A = TimeSerial(Left$(A, Len(A) - 2), Right$(A, 2), 0)
Application.EnableEvents = False
Target.Value2 = A
zeile = Target.Row + 1
ActiveSheet.Range("A" & zeile).Select
ActiveSheet.Range("A" & zeile - 1).Select
Target.NumberFormat = "hh:mm"
End If
fehlerbehandlung:
Application.EnableEvents = True
End Sub
Feedback fänd ich klasse
Greetings ;-)
Antwort 2 von CGAGLEX
Hi!
Danke für deine Bemühung, aber ich komm noch nicht ganz klar damit.
Bei mir passiert das alles in einem textfeld in einem Userform.
Was muss ich denn dann abändern?
Mit target,range... geht´s dann nicht oder?
Ich gebe die Zeit im Textfeld ein und auch dort sollte es dann mit Doppelpunkt angezeigt werden.
Erst bei drücken eines Commandbuttons wird der Inhalt des textfeldes in die Tabelle übertragen.
Gruss
Danke für deine Bemühung, aber ich komm noch nicht ganz klar damit.
Bei mir passiert das alles in einem textfeld in einem Userform.
Was muss ich denn dann abändern?
Mit target,range... geht´s dann nicht oder?
Ich gebe die Zeit im Textfeld ein und auch dort sollte es dann mit Doppelpunkt angezeigt werden.
Erst bei drücken eines Commandbuttons wird der Inhalt des textfeldes in die Tabelle übertragen.
Gruss
Antwort 3 von Coolpix
hallo nochmal,
dann mußt du das auch schreiben, daß du den Code für ne UserForm brauchst... ;-)
hier die Routine für die Auswertung deines Textfeldes und
was beim Übetragen in die Tabelle stehen sollte.
Greetings ;-)
dann mußt du das auch schreiben, daß du den Code für ne UserForm brauchst... ;-)
hier die Routine für die Auswertung deines Textfeldes und
was beim Übetragen in die Tabelle stehen sollte.
Private Sub CommandButton1_Click()
ActiveSheet.Range("a1") = VBA.Format(Me.txtdeptime, "hh:mm")
End Sub
Private Sub txtdeptime_AfterUpdate()
Dim a
On Error GoTo fehlerbehandlung
a = Me.txtdeptime
If a = "" Then Exit Sub
If Not (IsNumeric(a) Or IsDate(a)) Then Exit Sub
a = String(4 - Len(a), Asc("0")) & a
a = VBA.Left$(a, Len(a) - 2) & ":" & VBA.Right$(a, 2)
Application.EnableEvents = False
Me.txtdeptime = a
fehlerbehandlung:
Application.EnableEvents = True
End Sub
Greetings ;-)