Wer nicht denken will, soll halt suchen - und gefunden habe ich folgendes: Einen Beitrag aus dem Newsletter „SmartTools Excel“ vom September 2009. Das Makro läuft auch unter Excel 2010. Die Eingabe ist auch mit weniger als 4 Stellen möglich.
Vierstellige Eingaben automatisch in Zeitwerte umwandeln
Versionen: Excel 2007, 2003, 2002/XP und 2000
Wenn Sie häufig Uhrzeiten in Ihren Tabellen eingeben, suchen Sie natürlich nach Möglichkeiten, um die Datenerfassung zu beschleunigen. Dazu bietet es sich an, Uhrzeiten in Form von vierstelligen Zahlen einzugeben und sie dann von Excel automatisch ins gewünschte Zeitformat umwandeln zu lassen, könnte auch für all diejenigen interessant sein, die viel mit dem Ziffernblock arbeiten und zur Eingabe von Zeitwerten immer zwischen numerischem und alphanumerischem Teil der Tastatur wechseln müssen - nur um den Doppelpunkt einzugeben.
Zur Umwandlung vierstelliger Zahlenwerte in Zeitangaben setzen Sie eine Ereignisprozedur ein. Das ist ein VBA-Makro, das Excel automatisch startet, sobald eine bestimmte Aktion ausgeführt wird. In diesem Fall müssen Sie auf Änderungen an einem Tabellenblatt reagieren, das heißt Sie müssen Code für das „Worksheet_Change“-Ereignis schreiben. Dazu gehen Sie wie folgt vor:
Öffnen Sie die Arbeitsmappe, in der Sie Zeiten erfassen wollen, und wechseln Sie zu dem entsprechenden Tabellenblatt.
Klicken Sie mit der rechten Maustaste auf das Register dieses Tabellenblatts und wählen Sie im Kontextmenü den Befehl Code anzeigen an.
In den Dropdown-Feldern am oberen Rand des daraufhin angezeigten Codefensters wählen Sie links den Eintrag „Worksheet“ und rechts den Eintrag „Change“.
Erweitern Sie das eingefügte Prozedurgerüst, sodass der vollständige Prozedurcode wie folgt aussieht:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Eingabebereich As String
Dim Eingabe, Zeitwert
On Error GoTo ChgEvent_Error
Eingabebereich = „B2:C10“
If Not Application.Intersect _
(Target, ActiveSheet.Range(Eingabebereich)) _
Is Nothing _
And _
IsNumeric(Target.Value) _
And _
Target.Cells.Count = 1 Then
Application.EnableEvents = False
Eingabe = Format(Target.Value, „0000“)
Zeitwert = _
Left(Format(Eingabe, „0000“), _
Len(Eingabe) - 2) & „:“ & _
Right(Format(Eingabe, „0000“), 2)
Target.Value = Zeitwert
End If
ChgEvent_Error:
Application.EnableEvents = True
End Sub
Beachten Sie die Codezeile
Eingabebereich = „B2:C10“
Damit legen Sie den Tabellenbereich fest, in dem vierstellige Eingaben automatisch in Zeitwerte umgewandelt werden sollen. Ersetzen Sie „B2:C10“ durch die in Ihrem Tabellenblatt gewünschte Bereichsadresse.
Wechseln Sie zurück zum Excel-Fenster, indem Sie im Visual Basic-Editor Datei-Schließen und zurück zu Microsoft Excel aufrufen.
Sobald Sie jetzt Zahlenwerte in den in Schritt 5 angegebenen Tabellenbereich eingeben, wandelt sie Excel automatisch in Zeitangaben um. Voraussetzung ist natürlich, dass es sich um Werte handelt, die sich als Zeiten auswerten lassen.
Die automatische Konvertierung gilt immer nur für ein Tabellenblatt. Wenn Sie sie auch in anderen Blättern benötigen, müssen Sie auch dort den Code für das „Worksheet_Change“-Ereignis eingeben.