Unkorrekte Zeiteingaben verarbeiten
17.01.2005 20:59:22
BigWoelfi
da ich mir nicht sicher bin, ob in meinem Thread vom 14.01. noch wer lesen wird, bei der Menge von Beiträgen hier, mache ich mal sicherheitshalber einen neuen Thread auf.
In der Zwischenzeit habe ich auch weiter rumprobiert, so dass der TExt nicht mehr mit dem Beitrag aus dem alten Thread übereinstimmt.
Es ist folgendes Problem aufgetaucht:
Es geht um die Eingabe von Uhrzeiten in einem Arbeitszeitnachweis. So wie es jetzt ist, wird ausschließlich die Eingabe von zum Besipiel "07:00" akzeptiert, also Format "hh:mm", da die entsprechenden Zellen mit Format "hh:mm" formatiert sind.
Das ist mir so aber nichts. Ich möchte gern, dass die Eingaben ausgewertet und in das gleiche Format umgesetzt und dann in die Zelle zurückgeschrieben werden.
Wie das Zurückschreiben funktioniert, weiß ich.
Das Problem liegt offenbar in etwas ganz Speziellem.
Ich möchte, dass folgende Dinge möglich sind, ohne dass ich das Zellformat ändern muss, weil da in der Folge noch Berechnungen mit den Zellinhalten stattfinden müssen.
Beispiele für Eingaben:
Eingabe = Zeit
6 = 06:00
06 = 06:00
600 = 06:00
630 = 06:30
13 = 13:00
1330 = 13:30
usw..
Mein bisheriger Code dazu lautet:
Dim Inhalt
If Intersect(Target, Range("E11:F41")) Is Nothing Then Exit Sub
If Target.Cells.Count 1 Then Exit Sub
Application.EnableEvents = False
Inhalt = Target.Value
If Len(Inhalt) = 1 Then
Target.Value = "0" & Inhalt & ":00"
ElseIf Len(Inhalt) = 2 Then
Target.Value = Inhalt & ":00"
ElseIf Len(Inhalt) = 3 Then
Target.Value = "0" & Left(Inhalt, 1) & ":" & Right(Inhalt, 2)
ElseIf Len(Inhalt) = 4 Or Len(Inhalt) = 5 Then
Target.Value = Left(Inhalt, 2) & ":" & Right(Inhalt, 2)
End If
Das funktioniert in der Regelauch so, egal, ob ich führende Nullen abfrage oder nicht, außer, wenn bestimmte Zeiten in die Zellen eingegeben werden.
Folgendes passiert bzw. wird tatsächlich gewandelt:
Eingabe - Variable Inhalt - Zurückgeschrieben
06:00 - 0,25 - 0,:25
12:00 - 0,5 - 00:,5
18:00 - 0,75 - 0,:75
24:00 - 1,0 - 01:00
Wenn ich statt "Dim Inhalt" "Dim Inhalt as Date" verwende, funktioniert zwar der automatische Voreintrag für Arbeitszeiten. Gibt der Anwender aber die von mir gewollten Eingaben, führt dies logischerweise zu Fehlern in Folgemakros, weil "Inhalt" dann für "6" zum Beispiel "05.01.1900" enthält.
Fällt jemandem dazu eine Lösung ein?
Bei der Gelegenheit: Was muss man machen, damit auch 00:00 und 24:00 korrekt angezeigt werden? Das geht nämlich nicht, wenn man das Makro ganz weglässt.
Gruß, Wolfgang