Std.-Formatierung

Hallo,

es geht um eine Arbeitszeitverwaltung in Excel. Die von-bis-Zeiten habe ich mit [h]:mm formatiiert. Oft habe ich glatte Uhr-Zeiten einzugeben, z.B. 8:00 Uhr. Leider muss ich hier den Doppelpunkt und die zwei Nullen immer miteingeben. Gibt es hier eine Möglichkeit (Format) nur die 8 einzugeben und Excel ergänzt den Rest, so dass ich nur krumme Zeiten komplett eingeben muss?

Gruss

es geht um eine Arbeitszeitverwaltung in Excel. Die
von-bis-Zeiten habe ich mit [h]:mm formatiiert. Oft habe ich
glatte Uhr-Zeiten einzugeben, z.B. 8:00 Uhr. Leider muss ich
hier den Doppelpunkt und die zwei Nullen immer miteingeben.
Gibt es hier eine Möglichkeit (Format) nur die 8 einzugeben
und Excel ergänzt den Rest, so dass ich nur krumme Zeiten
komplett eingeben muss?

Hi Mama,

die 2 Nullen brauchst du eh nicht einzugeben, „8:“ reicht für „8:00“.

Alt+F11, Doppelklick links auf den Blattnamen, Code einfügen, ggfs die Spalte abändern, Editor schließen.
Die Spalte als Standard formatieren.

Option Explicit
'
Private Sub Worksheet\_Change(ByVal Target As Range)
If Target.Column 6 Then Exit Sub '6=6.te Spalte = Spalte F
If Target.Cells.Count \> 1 Then Exit Sub
If InStr(Target.Text, ":") = 0 Then
 Application.EnableEvents = False
 Target = Right("00" & Target, 2) & ":00"
 Application.EnableEvents = True
End If
End Sub

Ohne Makro ginge es auch mit einer Hilfsspalte C, in B gibst du die Zeiten ein. B und C sind [hh]:mm formatiert, dann in C1 und nach unten kopieren folgende Formel:
=WENN(DATUM(JAHR(B1);MONAT(B1);TAG(B1))=0;B1;ZEIT(TAG(B1);0;0))

Aber das sieht nicht sehr chic aus in Spalte B:smile:

Gruß
Reinhard

Gruss

Grüezi Mama Leone

Gibt es hier eine Möglichkeit (Format) nur die 8 einzugeben
und Excel ergänzt den Rest, so dass ich nur krumme Zeiten
komplett eingeben muss?

Ich habe mir dazu einen Eintrag in der Autokorrektur angelegt, der mir zwei Kommas in einen Doppelpunkt umwandelt.

So kannst Du

8,,

eingeben und erhältst die gewünschte Zeit.

Der Eintrag als Autokorrektur hat den Vorteil, dass er immer Gültigkeit hat und keine besonderen Einrichtungen oder Vorbereitungen getroffen werden müssen.
Des weiteren ist er kaum störend, denn wann will man schon mal zwei Kommas hintereinander eintragen.


Mit freundlichen Grüssen

Thomas Ramel

  • MVP für MS-Excel -

Ich habe mir dazu einen Eintrag in der Autokorrektur angelegt,
der mir zwei Kommas in einen Doppelpunkt umwandelt.

Hallo Thomas,
ja, die zwei Kommas sind zumindest ein Vorteil gegenüber dem Doppelpunkt, weil die Umschalttaste draussen bleibt. Schade, dass es nicht ganz ohne die Kommas geht, immerhin fügt Excel bei den reinen Zahlenformaten (#.###,00) das Komma und die eingestellten Stellen dahinter automatisch ein.

Gruss

Hallo Reinhard,

kann es sein, dass beim Makro der Doppelpunkt trotzdem miteingegeben werden muss? Beim Weglassen kommt nichts gescheites raus. Die Makrolösung wäre nur interessant, wenn nach der Zahl der Doppelpunkt und die zwei Nullen automatisch eingefügt werden. Ansonsten ist die Autokorrekturlösung die bessere Alternative.

Gruss

Hallo Mama Leone

Vielleicht interessiert Dich der folgende VBA-Code.
Vorraussetzung ist die Eingabe der Zeiten in militärischer Sprechweise,
also z.B. „Null Achthundert“ für 8:00 Uhr, wahlweise mit oder ohne Eingabe der führenden Null.
Einfach die Zahl 800 in die Zelle eingeben, der Code formatiert sie als Uhrzeit.
Funktioniert natürlich auch mit 1025 für 10:25 Uhr usw…
Hier kommt der Code, der im VisualBasic-Editor in „DieseArbeitsmappe“ eingetragen werden muß:

Private Sub Workbook\_SheetChange(ByVal Sh As Object, ByVal Target As Range)
 On Error GoTo Fehler
'\*\*\*\*Falls die Arbeitsmappe Tabellenblätter enthält, auf denen der Code nicht ausgeführt werden soll, muß der folgende Code "eingeREMt" werden
' Select Case ActiveSheet.CodeName 'Fall-Auswahl: Bestimmt, daß nach dem Namen des momentan aktiven Tabellenblattes gesucht werden soll
' Case "[Hier Tabellenblattnamen einfügen, mehrere durch Kommata getrennt]"
' Exit Sub
' End Select
 Select Case Target.Column 'Fall-Auswahl: Bestimmt, daß nach der Spalte gesucht werden soll, in die zuletzt eine Eingabe gemacht wurde
 Case 1 '1 entspricht Spalte A, muß ggf. angepasst werden
 Application.EnableEvents = False 'Verhindert, daß diese Prozedur rekursiv wird
 If ActiveSheet.Cells(Target.Row, Target.Column) "" Then ActiveSheet.Cells(Target.Row, Target.Column) = FormatDateTime(Date + ((WorksheetFunction.RoundDown(Target.Value / 100, 0) + ((Target.Value / 100) - WorksheetFunction.RoundDown(Target.Value / 100, 0)) / 0.6) / 24), vbShortTime)
 End Select
Ende:
 Application.EnableEvents = True
 Exit Sub
Fehler:
 Resume Ende
End Sub

Viele Grüße
Carsten

Hallo Mama,

kann es sein, dass beim Makro der Doppelpunkt trotzdem
miteingegeben werden muss?

nein.

Beim Weglassen kommt nichts gescheites raus.

Ist die Spalte Standard formatiert? Bei mir (XL2002) funktionierte es.

Die Makrolösung wäre nur interessant, wenn
nach der Zahl der Doppelpunkt und die zwei Nullen automatisch
eingefügt werden. Ansonsten ist die Autokorrekturlösung die
bessere Alternative.

Ich habe es umgeändert.
Wie vorher auch werden bei fehlendem Doppelpunkt, der Doppelpunkt und die 2 Nullen angehängt.

Da die Shifttaste für den Doppelpunkt lästig ist bei vielen einzugebenden Zeiten, kannst du jetzt wahlweise auch einen Punkt oder ein Komma (z.B. das von der Zehnertastatur rechts auf der tastatur) zur Trennung zwischen Stundenzahl und Minutenzahl benutzen.

Eingabe: Zellenanzeige:
 2 02:00
 2, 02:00
 2. 02:00
 2;1 02:01
 2,1 02:01
 2.1 02:01

Wichtig ist, daß die betreffende Spalte als Text formatiert ist.

Das gibt zwar in dem Moment wo man mit den Werten rechnen will erhöhten Formelaufwand, aber man muß diesem einmaligen vernachlääsigbaren Mehraufwand bei der Formelerstellung, die permanente Zeitersparnis bei Eingbae von Zeitwerten entgegenrechnen.

Gruß
Reinhard

Option Explicit
'
Private Sub Worksheet\_Change(ByVal Target As Range)
Dim T
On Error GoTo Fehler
If Target.Column 6 Then Exit Sub '6=6.te Spalte = Spalte F
If Target.Cells.Count \> 1 Then Exit Sub
Application.EnableEvents = False
Target = Application.WorksheetFunction.Substitute(Target, ",", ":")
Target = Application.WorksheetFunction.Substitute(Target, ".", ":")
If InStr(Target.Text, ":") = 0 Then
 Target = Right("00" & Target, 2) & ":00"
Else
 T = Split(Target, ":")
 Target = Right("00" & T(0), 2) & ":" & Right("00" & T(1), 2)
End If
Fehler:
Application.EnableEvents = True
End Sub

Hallo Reinhard,

ich weiss Deine Mühe zu schätzen, aber das neue Makro funktioniert dafür nicht bei krummen Zeiten (obwohl als Standard formatiert). Bei glatten Zeiten geht es ohne Komma und Doppelpunkt.

Gruss
ml

Carsten-Antwort
Hallo Carsten,

in Deinem Beitrag fehlte der Antwortlink, deswegen hier die Antwort. Dein Code funktioniert auch nicht, alle Zeiten (z.B Eingabe 800) werden in 00:00 umgewandelt. Du musst Dir aber keine weitere Mühe machen. Ich kann mit der Lösung über die Autokorrektur und , gut leben.

Gruss

ich weiss Deine Mühe zu schätzen, aber das neue Makro
funktioniert dafür nicht bei krummen Zeiten (obwohl als
Standard formatiert). Bei glatten Zeiten geht es ohne Komma
und Doppelpunkt.

Hi Mama,
wenn du mich weiter in den Wahnsinn treiben willst dann sage mir noch daß bei dir
http://www.wer-weiss-was.de/cgi-bin/forum/showarticl…
auch nicht geht :frowning: :smile:
Gruß
Reinhard

ich weiss Deine Mühe zu schätzen, aber das neue Makro
funktioniert dafür nicht bei krummen Zeiten (obwohl als
Standard formatiert). Bei glatten Zeiten geht es ohne Komma
und Doppelpunkt.

Hi Mama,
wenn du mich weiter in den Wahnsinn treiben willst dann sage
mir noch daß bei dir
http://www.wer-weiss-was.de/cgi-bin/forum/showarticl…
auch nicht geht :frowning: :smile:

Hallo Reinhard,
Du musst Dir wirklich nicht so viel Mühe geben. Glatte Zeiten funktionieren jetzt einwandfrei. Probleme gibt es bei vollen Minuten, z.B. wenn ich 8,30 eingebe, macht er 8:03, d.h. 8:30 kann nur mit Doppelpunkt eingegeben werden. Den will ich gerade vermeiden. Aber auch bei der Autokorrekturlösung mit zwei Kommas gibt es das Problem, dass wenn 8,3 eingegeben wird, Excel daraus 8:03 macht, d.h. hier muss noch die letzte Null miteingegeben werden. Bei Deinem Code gibt es noch ein weiteres Problem. Krumme Uhrzeiten nach Mitternacht, z.B. Eingabe 0,35 führen zu Nonsensergebnissen. Die meisten werden solche Zeiten nie eingeben müssen, bei mir kann das aber durchaus passieren. Du musst dir hier aber nicht weiter den Kopf zerbrechen. Hier hat wohl Redmond geschlampt.

Gruss
ml

Grüezi Mama Leone

Aber auch bei der Autokorrekturlösung mit
zwei Kommas gibt es das Problem, dass wenn 8,3 eingegeben
wird, Excel daraus 8:03 macht, d.h. hier muss noch die letzte
Null miteingegeben werden.

Ja, das ist korrekt - die 3 wird eben als 3 und nicht als 30 ausgewertet - dasselbe passiert wenn du 8:3 eingibst, auch dann wird 8:03 daraus.
Die Autokorrektur-Version verhält sich daher genauso wie Excel sonst auch.

Hier hat wohl Redmond geschlampt.

Das halte ich für ein Gerücht! :wink:
Es ist immer einfach auf die Entwickler zu schimpfen, wenn mal was nicht auf Anhieb klappt wie man es gerne wünscht. Ich habe aber schon festgestellt, dass sich die Wunsche in ähnlichen Situaitionen durch diametral entgegen stehen können - wie soll hier eine Lösung gefunden werden?

Ich denke, dass sehr wohl sehr viel überlegt wurde bei der Verarbeitung von Uhrzeiten, dass es aber nicht möglich ist, allen Wünschen und Forderungen gerechet zu werden.
Wenn Du selbst programmierst hast Du diese Erfahrung bestimmt auch schon gemacht.


Mit freundlichen Grüssen

Thomas Ramel

  • MVP für MS-Excel -

Hallo Mama Leone.

in Deinem Beitrag fehlte der Antwortlink, deswegen hier die
Antwort. Dein Code funktioniert auch nicht, alle Zeiten (z.B
Eingabe 800) werden in 00:00 umgewandelt. Du musst Dir aber
keine weitere Mühe machen. Ich kann mit der Lösung über die
Autokorrektur und , gut leben.

Ich möchte unbedingt anmerken, daß ich diesen Code nochmals getestet habe, daß er funktioniert und ich ihn ohnehin schon seit Jahren so verwende.

Viele Grüße
Carsten

Hallo Mama,

funktionieren jetzt einwandfrei. Probleme gibt es bei vollen
Minuten, z.B. wenn ich 8,30 eingebe, macht er 8:03, d.h. 8:30
kann nur mit Doppelpunkt eingegeben werden. Den will ich
gerade vermeiden.

wie Thomas schon sagte, daß ist eine rein politische Entscheidung ob 8,4 als 08:40 oder 08:04 interpretiert wird und ich war beim Programmieren wohl grad in Opposition zu dir, aber ich bin da Wendehals, mal schauen :smile:

Bei Deinem Code gibt es noch ein
weiteres Problem. Krumme Uhrzeiten nach Mitternacht, z.B.
Eingabe 0,35 führen zu Nonsensergebnissen. Die meisten werden
solche Zeiten nie eingeben müssen, bei mir kann das aber
durchaus passieren. Du musst dir hier aber nicht weiter den
Kopf zerbrechen. Hier hat wohl Redmond geschlampt.

Nö, ich *gg*

Beim Testen ist es normal das einem einige Konstellationen durch die Lappen gehen und sicher, ich hatte 0,00 getestet, aber halt nicht 0,01.

Gruß
Reinhard

Ja, das ist korrekt - die 3 wird eben als 3 und nicht als 30
ausgewertet - dasselbe passiert wenn du 8:3 eingibst, auch
dann wird 8:03 daraus.

Hallo Thomas,
wenn bei einem Zahlenformat (#.###,00) 8,3 eingegeben wird, dann macht Excel 8,30 daraus, warum nicht bei den Zeitformaten, hier ist es 8:03. Ich finde hier wurde nicht konsequent gedacht. Es sei denn Du kannst eine technische Erklärung dafür liefern, dann wäre es war anderes.

Gruss
ml

Grüezi Mama Leone

Ja, das ist korrekt - die 3 wird eben als 3 und nicht als 30
ausgewertet - dasselbe passiert wenn du 8:3 eingibst, auch
dann wird 8:03 daraus.

wenn bei einem Zahlenformat (#.###,00) 8,3 eingegeben wird,
dann macht Excel 8,30 daraus, warum nicht bei den
Zeitformaten, hier ist es 8:03. Ich finde hier wurde nicht
konsequent gedacht. Es sei denn Du kannst eine technische
Erklärung dafür liefern, dann wäre es war anderes.

Eine Zahlen- und eine Zeitangabe sind in Excel zwei genaz verschiedene Paar Schuhe.

Stelle mal bei beiden das Zellenformat auf ‚Standard‘ und du siehst sofort was ich meine - die reine Zahl bleibt als was sie ist stehen, die Zeitangabe wird als ein Wert

Hi Mama,

Du musst Dir wirklich nicht so viel Mühe geben.

nix da, das Problem muß gelöst werden, Lebensaufgabe daraus bastle :smile:

Schau mal hier bitte:
http://www.wer-weiss-was.de/cgi-bin/forum/showarticl…

Ich habe ausgestet alles was mir so einfiel, mache bitte das Gleiche und gib Feedback, Danke
Meiner Meinung nach macht das Programm genau das was du möchtest.

Gruß
Reinhard