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

Forumthread: 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
Anzeige
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

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

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige