Microsoft Excel

Herbers Excel/VBA-Archiv

Zeiteingabe ohne Doppelpunkt | Herbers Excel-Forum


Betrifft: Zeiteingabe ohne Doppelpunkt von: Winfried
Geschrieben am: 04.03.2010 15:54:19

Hallo liebe Experten,

ich habe diesen Code seit vielen Jahren für eine Erfassung von Arbeitszeiten genutzt (gefunden hier im Archiv 2003).
Es ergibt sich eine Besonderheit: Wenn man 2400 in die Zelle einträgt, wird daraus die Anzeige 00:01 bei 0000 bleibt die Zelle leer. Wie kann ich den Code ändern
damit eine Anzeige 00:00 erscheint, weil mit diesen Zeiten auch noch weiter gerechnet wird, und auch jemand um Mitternacht seinen Dienst beginnt.

Sub Formatierung(Zelle)
Dim s%, m%, z%
With Range(Zelle)
If .Value = "" Then Exit Sub
If IsNumeric(.Value) And InStr(.Value, ":") = 0 And InStr(.Value, ",") = 0 Then
If Len(.Value) > 2 Then
s = Left(.Value, Len(.Value) - 2)
m = Right(.Value, 2)
'Bei dieser Einstellung kann keine Uhrzeit _
die mit 0 beginnt z.B. 00:30 eingegeben werden
's = .Value
'm = 0
Else
s = 0
m = .Value
End If
.Value = s & ":" & m
End If
End With
End Sub

Vielen Dank für eine hilfreiche Antwort
Winfried

  

Betrifft: AW: Zeiteingabe ohne Doppelpunkt von: Schorschi
Geschrieben am: 04.03.2010 16:24:23

Hallo Winfried,

Vorschlag ohne VBA:

Die Zellen "Benutzerdefiniert" formatieren.

Im Feld Typ das Format:

00":"00 oder

00":"00 "Uhr" eingeben und mit OK bestätigen.


Gruß
Schorschi


  

Betrifft: AW: Zeiteingabe ohne Doppelpunkt von: Winfried
Geschrieben am: 04.03.2010 16:59:00

Hallo Schorschi,

das funktioniert nicht so wie ich es benötige, wenn ich die Zellen wie vorgeschlagen formatiere werden alle Eingaben egal ob 0800, 2400 oder 0530 als 00:00 wiedergegeben.

Danke
Winfried


  

Betrifft: AW: Zeiteingabe ohne Doppelpunkt von: Schorschi
Geschrieben am: 04.03.2010 17:14:16

Hallo Winfried,

funktioniert bei mir aber wie gewünscht!!

Mit Tastenkombi [Strg]+[1] Dialog Zellenformatieren aufrufen.

Wechseln auf Registerkarte Zahlen,
im Listenfeld Kategorie auf den Eintrag Benutzerdefiniert wechseln.

Im Feld Typ das Format 00":"00 oder 00":"00 "Uhr" eingeben und mit OK bestätigen.

Evtl. falsch mit 00:00 formatiert???? ... richtig wie geschrieben 00":"00 ...Gänsefüsschen sind wichtig!!

Nix für ungut

Gruss
Schorschi


  

Betrifft: AW: Zeiteingabe ohne Doppelpunkt von: Winfried
Geschrieben am: 04.03.2010 17:28:30

Hallo Schorschi,

ich habe es genau so gemacht wie du es beschrieben hast. Es funktioniert nicht, das hängt aber mit den Tabellen zur Arbeitszeiterfassung zusammen. Bei einer "Normalen" Excel Tabelle funktioniert deine Empfehlung. Aufgrund von verschiedenen Makros, benötige ich leider eine VBA-Lösung.

Trotzdem vielen Dank für die Mühe

Gruss
Winfried


  

Betrifft: Das mit den Länge-Abfragen ist völlig... von: Luc:-?
Geschrieben am: 04.03.2010 16:27:55

…überflüssig, Winfried,
wenn du deinen Wert erst mal mit Right(WorksheetFunction.Text(Zelle, "0000"), 4) auf genau 4 Stellen bringst. Außerdem ist das keine Formatierung ieS, sondern eine Zellwertergänzung, die eine bestimmte Autoformatierung auslöst.
Gruß Luc :-?


  

Betrifft: AW: Das mit den Länge-Abfragen ist völlig... von: Winfried
Geschrieben am: 04.03.2010 16:54:50

Hallo Luc,

danke für die Antwort, aber ich verstehe nicht ganz was ich an welcher Stelle wie ändern muss damit es mit der Eingabe klappt. Kannst du mir das bitte weiter erklären?

Vielen Dank
Winfried


  

Betrifft: Alles ersetzen, was von... von: Luc:-?
Geschrieben am: 04.03.2010 17:24:21

If Len(.Value) > 2 Then bis End If steht, Winfried,
und dafür zuerst die bisher offensichtlich nicht verwendete Variable z = Right(WorksheetFunction.Text(Range(Zelle), "0000"), 4) setzen und dann nur die beiden Zeilen s = Left(z, 2) und m = Right(z, 2) zu schreiben. Anschließend brauchst du dann s und m nur noch wie gehabt zusammenzusetzen.
Zelle wird offensichtlich als Adresstext von einer aufrufenden Prozedur übergeben. Wahrscheinl ist das eine Ereignisprozedur wie Worksheet_Change, die das tut. Die hätte natürlich auch gleich das ganze Objekt (Target) weiterreichen können, aber was soll's…
Gruß Luc :-?


  

Betrifft: AW: Das mit den Länge-Abfragen ist völlig... von: Reinhard
Geschrieben am: 04.03.2010 17:29:13

Hallo Winfried,

ich weiß von Excelusern die viele Zeiten einhämmern müssen, daß sie rechts mit dem Zahlenblock das machen, dabei anstatt Doppelpunkt zwei Kommas reinsetzen.
Nach Drangewöhnung geht das fix beim Schreiben.

Über Autokorrektur tauscht dann Excel automatisch die ",," gegen ":".

Mien Code akzeptiert auch 9999 :-)

in Modul des Blattes:

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column <> 1 Then Exit Sub ' 1=Spalte A, 2=Spalte B usw.
With Target
   If .Value = "" Then Exit Sub
   If IsNumeric(.Value) And InStr(.Value, ":") = 0 And InStr(.Value, ",") = 0 Then
      Application.EnableEvents = False
      .Value = Format(.Value, "00:00")
      Application.EnableEvents = True
   End If
End With
End Sub
Gruß
Reinhard


  

Betrifft: AW: Das mit den Länge-Abfragen ist völlig... von: Winfried
Geschrieben am: 04.03.2010 17:47:20

Hallo Reinhard,

tausend Dank, das ist genau der Code den ich benötige. Ich hab es gleich mal bei einem Mitarbeiter ausprobiert und es hat super funktioniert.

Viele Grüsse
Winfried


  

Betrifft: AW: 12:95 Uhr 00":"00 "Uhr" falsch von: Wilfried Höttl
Geschrieben am: 04.03.2010 17:29:37

Hallo!

Format 00":"00 "Uhr" ist falsch 12:95 gibt es gar nicht

Gruß
Wilfried


  

Betrifft: AW: Das mit den Länge-Abfragen ist völlig... von: Winfried
Geschrieben am: 04.03.2010 17:32:13

Hallo Luc,


ich habe eben vergessen den Haken bei Frage noch offen zu setzen.
Ich weis nicht genau wie ich deine Hilfe anwenden soll. Kannst du mir genauer mitteilen was ich in dem obigen Code wie und wo ändern muss.

Danke
Gruss
Winfried


  

Betrifft: AW: Das mit den Länge-Abfragen ist völlig... von: Wilfried Höttl
Geschrieben am: 04.03.2010 21:18:15

Hallo Winfried!

Mit einer Hilfsspalte geht es so und weiter rechnen geht es auch.

Zeit

 ABC
161Uhrzeit Eingabe Zahlen >> in Stunden, Minuten umwandeln  
162   
163   
164175117:51hh:mm
165135513:55 
166900:09 
167 31:55[hh]:mm

Formeln der Tabelle
ZelleFormel
B164=1*(TEXT(A164;"00\:00")+0)
B165=1*(TEXT(A165;"00\:00")+0)
B166=1*(TEXT(A166;"00\:00")+0)
B167=SUMME(B164:B166)


Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4

Gruß
Wilfried


Beiträge aus den Excel-Beispielen zum Thema "Zeiteingabe ohne Doppelpunkt"