Supportnet Computer
Planet of Tech

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...


 
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

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.


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 ;-)

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: