PDA

Vollständige Version anzeigen : Suche Formel zur aut. Umwandlung von Zahlen in Uhrzeit


Tweppi
16.11.2008, 13:10
Hallo, liebe Freunde!

Ich bin auf der Suche nach einer Lösung eines Darstellungs- bzw. Formatierungsproblems.
Ich hätte gern eine einfache Zahl in A1 eingegeben, die dann in A1 automatisch als Uhrzeit dargestellt wird.
Beispiel: Ich tippe die Zahl 1541 in A1 ein und dargestellt werden soll sie in der Formatierung 15:41.

Anmerkung: Die Zellen A1ff. sind bereits mit der Formatierung hh:mm bedacht, leider hapert es an der gewünschten Darstellung. Gebe ich in meinem Beispiel die 15 ein, steht in der Formel-Leiste "15.01.1900 00:00:00".

Vielleicht kann mir einer von Euch helfen!?

Viele Grüße,
Tweppi

Uwe (:o)
16.11.2008, 13:19
Hi Tweppi,
wenn es nur um die Darstellung als Uhrzeit geht, dann benutzerdefiniert formatieren als:
0#":"##
das ist aber dann nicht wirklich eine Uhrzeit und Du kannst nicht damit rechnen. Genügt Dir das?

Tweppi
16.11.2008, 13:24
Hallo Uwe!

Vielen Dank für den schnellen Vorschlag! Leider brauch ich eine Uhrzeit, um mit ihr weiterrechnen zu können. Gibt es dafür eine Lösung?

Gruß Tweppi

EarlFred
16.11.2008, 13:36
Hallo Tweppi,

dann probier mal folgendes Makro auf Ebene des betreffenden Tabellenblattes:

Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 1 And IsNumeric(Target) Then
Dim intMinuten As Integer, intStunden As Integer

Application.EnableEvents = False

intMinuten = CInt(Right(Target, 2))
intStunden = CInt(Left(Target, Len(Target) - 2))

Target = TimeSerial(intStunden, intMinuten, 0)
Target.NumberFormat = "hh:mm:ss"

Application.EnableEvents = True
End If
End Sub


Grüße
EarlFred

Tweppi
16.11.2008, 19:52
Hallo Earlfred!

Habe das mit dem Makro mal versucht. Fazit: Manchmal lief´s und manchmal nicht - bei Eingabe einer vierstelligen Zahl. Hatte ich eine 8 (für 8 Uhr | 08:00) eingegeben, zeigte es mir wieder 00:00 an. Leider funzt dat auch nicht so, wie ich es mir wünsche.

Noch mal eine etwas genauere Beschreibung meines Anliegens:
Bei meiner Tabelle handelt es sich um eine Arbeitszeiterfassungstabelle. Dort soll der Arbeitnehmer seine Arbeitszeiten einfacher eintragen können. Bisher musste man immer ##:## eingeben. Um das Eingeben der Zeit attratkiver und einfacher zu gestalten, möchte ich von einer einstelligen Ziffer (Siehe Erklärung oben) bis hin zu einer vierstelligen Zahlenfolge (z.B. 1222 für 12:22) die eingegebene(n) Zahl(en) zu einer Uhrzeit automatisch umwandeln, um mit dieser dann weiterzurechnen.

Da ich mich nicht in/mit Excel auskenne, weiß ich nicht, ob dies überhaupt so möglich ist. Wäre schön, wenn sich das Tüpfelchen auf dem "i" noch platzieren ließe.

Liebe Grüße,
Tweppi

EarlFred
16.11.2008, 20:30
Hallo Tweppi,

Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 1 And IsNumeric(Target) Then
Dim intMinuten As Integer, intStunden As Integer

If Len(Target) > 2 Then
intMinuten = CInt(Right(Target, 2))
intStunden = CInt(Left(Target, Len(Target) - 2))
Else
intMinuten = 0
intStunden = CInt(Target)
End If

Application.EnableEvents = False
Target = TimeSerial(intStunden, intMinuten, 0)
Target.NumberFormat = "hh:mm:ss"
Application.EnableEvents = True
End If
End Sub

Der obige Code sollte Dein Problem hoffentlich lösen. Ich hatte Eingaben unter 3 Stellen nicht beachtet, da ich davon ausging, dass die Minuten immer mit eingegeben werden. So sollte es aber nun gehen, da Eingaben mit 1 oder 2 Stellen nun als Stunde interpretiert werden.

Grüße
EarlFred

Thomas Ramel
17.11.2008, 05:50
Grüezi Tweppi

Eine andere sehr einfache Methode (die dann auch ganz ohne Makros funktioniert und sicher ist) ist die folgende:

Richte eine Autokorrektur ein, die die zwei Kommas durch einen Doppelpunkt ersetzt.

Alle Zeitangaben kannst Du dann z.B. mit 8,,00 eintragen und es wird automatisch 8:00 daraus gemacht.

Das ist IMO viel einfacher und zuverlässiger als jeder VBA-Code ;-)

Uwe Küstner
17.11.2008, 08:03
Auch Hallo,

das Problem ist, dass man Zeiten kleiner 1 Stunde per VBA nur auswerten kann,
wenn die Eingabezelle als Text formatiert ist. Nur dann werden führende Nullen
erkannt.