Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Ganze Zahl bei Eingabe in Std:Min umwandeln

Ganze Zahl bei Eingabe in Std:Min umwandeln
Lutz
Liebe Ex(cel)perten,
Zur Vereinfachung für die häufige Eingabe von Zeitangaben in Dienstplänen suche ich eine Lösung für die Umwandlung von ein- bis vierstelligen Zahlen in Stunden:Minuten, z. B.
9 > 9:00
12 > 12:00
915 > 9:15
2045 > 20:45
Bei meiner Recherche habe ich bislang nur Teillösungen gefunden. Folgendes Makro
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("A:A")) Is Nothing Then
If IsNumeric(Target.Value) And Target.Value > 1 And Len(Target.Value) 
kommt meinem Ziel am nächsten. Aufgrund bescheidener VBA-Kenntnisse kann ich den Code jedoch allein nicht entsprechend anpassen.
Kann mir jemand dabei helfen oder hat eine andere zündende Idee?
Vielen Dank im Voraus!
Lutz
AW: Ganze Zahl bei Eingabe in Std:Min umwandeln
20.11.2011 11:58:40
Hajo_Zi
Hallo Lutz,
die für mich einfachste Art zur Zeiteingabe ist.
Stelle bei Autokorrektur ein Ersetzen ,, durch : dann kannst Du Zeiten recht schnell mit der Num-Lock-Tastatur eingeben.
http://hajo-excel.de/chCounter3/getfile.php?id=70

AW: Ganze Zahl bei Eingabe in Std:Min umwandeln
20.11.2011 12:58:47
Lutz
Hallo Hajo,
vielen Dank, dass Du Dich auch dieser Problemstellung angenommen hast :-)
An die Autokorrekturmöglichkeit hatte ich auch gedacht. Allerdings wollte ich die Eingabe gern so weit wie möglich vereinfachen.
Die Zeiterfassung erfolgt im Zeitraum 09:00 bis 23:00 Uhr und betrifft vorwiegend volle Stunden. Daher hatte ich gehofft, dass eine automatische Ergänzung ganzer Zahlen möglich wäre (Eingabe 12; Umwandlung 12:00).
Dein Code in der Mappe "Uhrzeit überarbeitet" wandelt drei- und vierstellige Zahlen einwandfrei in das gewünschte Format um (danke dafür!). Zweistellige Zahlen werden jedoch leider als Minuten interpretiert (12 = 00:12). Wäre es möglich, diese Bedingung in dem Code noch zu berücksichtigen? Das wäre toll.
Viele Grüße
Lutz
Anzeige
AW: Ganze Zahl bei Eingabe in Std:Min umwandeln
20.11.2011 13:04:05
Hajo_Zi
Hallo Lutz,
den Code hast Du Dir nicht angesehen? Es steht doch schon drin.

Else
' Stunden haben das Primat
InS = .Value
InM = 0
' Minuten haben das Primat
'                            InS = 0
'                            InM = .Value
Gruß Hajo
AW: Ganze Zahl bei Eingabe in Std:Min umwandeln
20.11.2011 13:09:47
Lutz
Hallo Hajo,
sorry für meine oberflächliche Betrachtung ... Problem vollständig gelöst - perfekt!
Danke und viele Grüße!
Lutz
vielleicht einfacher
20.11.2011 13:18:26
Erich
Hi Lutz,
probier mal das hier:

Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim iStd As Integer, iMin As Integer
If Not Intersect(Target, Columns(1)) Is Nothing Then
If IsNumeric(Target.Value) Then
Select Case Len(CStr(Target.Value))
Case 1, 2
iStd = Target.Value
Case 3, 4
iStd = Fix(Target.Value / 100)
iMin = Target.Value - 100 * iStd
Case Else
iStd = -1         ' keine Ausgabe
End Select
If iStd >= 0 And iStd = 0 And iMin 
Passt das?
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
AW: vielleicht einfacher
20.11.2011 13:32:30
Lutz
Hallo Erich,
super! Dein Code funktioniert in der A-Spalte einwandfrei. Die Zellen müssen nur auf hh:mm formatiert sein.
Kleine Frage: Wo erweitere ich im Code die angesprochenen Spalten?
Viele Grüße
Lutz
AW: vielleicht einfacher
20.11.2011 13:34:46
Hajo_Zi
Hallo Lutz,
Du beachtest auch das bei dem Code nicht mehre Zellen mit einmal ausgefüllt werden dürfen?
Gruß Hajo
AW: vielleicht einfacher
20.11.2011 13:44:41
Lutz
Hallo Hajo,
*seufz* habe ich übersehen.
Du hast natürlich absolut Recht. Dein Code erlaubt auch das gleichzeitige Füllen mehrerer Zellen.
Künftig achte ich darauf, dass Du sogar mehr Bedingungen berücksichtigst als gewünscht :-)))
Viiiiiiiiiiiiiiele Grüße
Lutz
Anzeige
mehrere Spalten, auch mehrere Zellen
20.11.2011 15:56:30
Erich
Hi Lutz,
so, nun hat mein Code auch gelernt, mehrere Eingaben auf einmal zu verarbeiten. :-)
Am Anfang sind drei Beispiele für Spaltenfestlegungen. Reichen die dir aus?
(Es müssen ja auch keine ganzen Spalten sein - siehe in Hajos Code.)
Probier mal:

Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim rngBer As Range, rngC As Range, iStd As Integer, iMin As Integer
'   Set rngBer = Intersect(Target, Columns(1))                     ' Spalte A
'   Set rngBer = Intersect(Target, Range("B:D"))                   ' Spalten B,C,D
'   Set rngBer = Intersect(Target, Range("B2:D99"))                ' Bereich B2:D99
Set rngBer = Intersect(Target, Union(Columns(2), Columns(4)))  ' Spalten B,D
If Not rngBer Is Nothing Then
Application.EnableEvents = False
For Each rngC In rngBer
If IsNumeric(rngC) Then
Select Case Len(CStr(rngC.Value))
Case 1, 2:  iStd = rngC.Value
Case 3, 4
iStd = Fix(rngC.Value / 100)
iMin = rngC.Value - 100 * iStd
Case Else:  iStd = -1         ' keine Ausgabe
End Select
If iStd >= 0 And iStd = 0 And iMin 
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
AW: mehrere Spalten, auch mehrere Zellen
20.11.2011 17:51:17
Lutz
Hallo Erich,
nun lässt Dein Code keine Wünsche offen :-)
Ganz herzliche Grüße

384 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige