Herbers Excel-Forum - das Archiv
Zeitformatierung ohne ":" (VBA)?

|
Betrifft: Zeitformatierung ohne ":" (VBA)?
von: Benjamin
Geschrieben am: 07.12.2003 14:42:09
Hallo Forum,
ich habe (wieder einmal) ein Problem mit VBA und hoffe, das ihr mir (auch wieder einmal) weiterhelfen könnt.
Mein Problem:
--------------------
In Tabelle1 müssen in verschiedenen Bereichen (I9:J39, O9:Q39, T9:Y39 und AA9:AA39) Zeitwerte eingetragen werden.
Allerdings ist es bei der Arbeit ausgesprochen hinderlich, jeden Zeitwert mit Doppelpunkt einzugeben.
Gibt es eine Möglichkeit, den Zeitwert per Komma einzugeben und möglichst beim Verlassen des Feldes per VBA richtig zu formatieren?
Vielen Dank im Voraus für jeden Tip, oder besser, für einen Beispiel-Code (meine VBA-Kenntnisse sind leider noch sehr begrenzt).
Gruss Benny
Betrifft: AW: Zeitformatierung ohne ":" (VBA)?
von: GerdW
Geschrieben am: 07.12.2003 14:44:34
Gib zwei ,, ein und in Autokorrektur ersetzem ,, durch :
Gerd
Betrifft: NO:Zeitformatierung ohne ":" (VBA)?
von: Benjamin
Geschrieben am: 07.12.2003 14:50:34
Hallo Gerd,
danke für Deinen Tip!
Gibt es dazu vielleicht auch eine Lösung per VBA?
Gruss Benny
Betrifft: AW: Zeitformatierung ohne ":" (VBA)?
von: Ramses
Geschrieben am: 07.12.2003 14:49:01
Hallo
kopiere den Code in das Klassenmodul deiner Tabelle wo du die Funktion haben möchtest.
(Rechte Maustaste auf Tabellenregister > Code Anzeigen)
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
'"Target.Column <> 7" = Eingabe nur in Spalte G erlaubt
'"Target.Row < 16" = Eingabe nur von Zeile 1 bis 15
If Target.Column <> 7 Or Target.Row < 16 Then
Application.EnableEvents = True
Exit Sub
End If
If InStr(1, Selection.Address, ":") > 0 Then
Application.EnableEvents = True
MsgBox "Sie können Daten löschen, aber keine Daten eingeben bei einer Merhfachselektion"
Exit Sub
End If
With Target
If .NumberFormat = "[hh]:mm" Then
.NumberFormat = "General"
End If
If IsEmpty(.Value) Then
Application.EnableEvents = True
Exit Sub
End If
'Entfernen von Kommas aus einer Eingabe
If InStr(1, .Value, ",") > 0 Then
.Value = Application.WorksheetFunction.Replace(.Value, InStr(1, .Value, ","), 1, "")
End If
If IsNumeric(.Value) Then
Select Case Len(.Value)
Case 1
.Value = "00:0" & .Value
Case 2
.Value = "00:" & .Value
Case 3
.Value = "0" & Left(.Value, 1) & ":" & Right(.Value, 2)
Case 4
.Value = Left(.Value, Len(.Value) - 2) & ":" & Right(.Value, 2)
Case Else
'Provisorisches Abfangen einer Zeiteingabe
'Case 5 geht nicht, da bei Eingabe einer Uhrzeit
'eine mehrstellige Nachkommazahl entstehen kann
'Die einfache Prüfung, wenn oben alles durch ist,
'lautet hier, ob der WErt numerisch ist...
If IsNumeric(.Value) Then
Application.EnableEvents = True
Exit Sub
End If
'... wenn nicht löschen
.Value = ""
MsgBox "Unerlaubte Eingabe"
End Select
.NumberFormat = "[hh]:mm"
End If
End With
Application.EnableEvents = True
End Sub
Code eingefügt mit Syntaxhighlighter 1.16
Gruss Rainer
Betrifft: Offen: Zeitformatierung ohne ":" (VBA)?
von: Benjamin
Geschrieben am: 07.12.2003 15:10:50
Hallo Rainer,
das klappt leider nicht, bei Eingabe von 1,20 wird im Anschluss 28:48 angezeigt!!
Das zweite Problem wäre der Bereich ('"Target.Column <> 7" = Eingabe nur in Spalte G erlaubt).
Der Bereich müsste jedoch die Bereiche I9:J39, O9:Q39, T9:Y39 und AA9:AA39 umfassen.
Hast Du noch eine Idee??
Danke und Gruss Benny
Betrifft: Natürlich klappt das... :-)
von: Ramses
Geschrieben am: 07.12.2003 15:26:28
Hallo
Der Code ist getestet und das Ergebnis eines längeren Threads.
Hier die angepasste Datei zum Download.
https://www.herber.de/bbs/user/2352.xls
Gruss Rainer
Betrifft: AW: Natürlich klappt das... :-)
von: Banjamin
Geschrieben am: 07.12.2003 15:49:18
Hallo Rainer,
sorry, das klappt natürlich bestens, lag wohl an meiner Zell-Formatierung :-).
Danke und Gruss Benny
Betrifft: Merci :-)) Geschlossen o.T.
von: Ramses
Geschrieben am: 07.12.2003 15:57:39
...