Herbers Excel-Forum - das Archiv

Zeitformatierung ohne ":" (VBA)?

Bild

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

Bild

Betrifft: AW: Zeitformatierung ohne ":" (VBA)?
von: GerdW
Geschrieben am: 07.12.2003 14:44:34
Gib zwei ,, ein und in Autokorrektur ersetzem ,, durch :

Gerd
Bild

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
Bild

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
Bild

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
Bild

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
Bild

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
Bild

Betrifft: Merci :-)) Geschlossen o.T.
von: Ramses
Geschrieben am: 07.12.2003 15:57:39
...
Bild
Excel-Beispiele zum Thema " Zeitformatierung ohne ":" (VBA)?"
VBA-Zugriff auf geschlossene Arbeitsmappe. VBA-DateDiff und Excel-DATEDIF
Felder über VBA sortieren Adressdaten der aktiven Zelle über VBA feststellen
Zellinnenfarben über VBA festlegen KGRÖSSTE über VBA eintragen
Per VBA einen Verweis zu einer *.DLL erstellen Über VBA Schriftgröße von Fußzeilen bestimmen
Seitennummer und Seitenanzahl per VBA in Kopfzeile Textdatei als externe Datei per VBA einbinden