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

Inhalt der Textbox in Datum umwandeln

Forumthread: Inhalt der Textbox in Datum umwandeln

Inhalt der Textbox in Datum umwandeln
23.05.2007 14:21:56
Florian
Hallo!
Ich habe ein Userform, das mehrere Textboxen enthält! In eine dieser Textboxen wird ein Datum eingtragen! Ich gebe das Datum bis jetzt z. B. so ein: "01.01.2007"
Ich möchte das Datum aber so "01012007" oder "010107" eingeben!
Wie erreiche ich, dass beim Verlassen der Textbox, die Werte "01012007" oder "010107" in das Format "01.01.2007" umgewandelt werden. Sollte der Wert im richtigen Format oder ein ganz anderer Wert eingebenen sein, soll natürlich nichts passieren!
Danke für eure Hilfe!
Florian

Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Inhalt der Textbox in Datum umwandeln
23.05.2007 14:49:00
Armin
Hallo Florian,
schreibe in der Zuweisung : Format(Textbox1.Value,"dd.mm.yyyy")
Armin

AW: Inhalt der Textbox in Datum umwandeln
23.05.2007 16:47:19
Florian
Hallo!
Habe nun folgenden Code gefunden und abgeändert!

Private Sub TextBox1_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)
'   TMMJJ , T.MM.JJ, TTMMJJ, TT.MM.JJ, TTMMJJJJ, TT.MM.JJJJ, TMMJJJJ, T.MM.JJJJ als Eingabe
'   Monat und Jahr müssen IMMER mindestens zweistellig angegeben werden.
Dim sDatum    As String
Dim sEingabe  As String
Dim sJahr     As String
Dim sMonat    As String
Dim sTag      As String
If Not Me.TextBox1.Value = "" Then ' TextBox ist nicht leer ?
Application.EnableEvents = False
On Error GoTo Fehler
sEingabe = CStr(CLng(Trim(Me.TextBox1.Value)))
If Left(Me.TextBox1.Value, 1) = "0" Or _
Len(sEingabe) = 5 Or Len(sEingabe) = 7 Then
sEingabe = "0" & sEingabe
End If
If Len(sEingabe) = 6 Then       ' als TTMMJJ/TT.MM.JJ
sTag = Left(sEingabe, 2)
sMonat = Mid(sEingabe, 3, 2)
sJahr = Right(sEingabe, 2)
If Val(sJahr) > 30 Then      ' Jahreszahl > 30 ?
sJahr = "19" & sJahr      ' dann 1900
Else                        ' sonst
sJahr = "20" & sJahr      ' Jahr 2000
End If
ElseIf Len(sEingabe) = 8 Then   ' als TTMMJJJJ/TT.MM.JJJJ
sTag = Left(sEingabe, 2)
sMonat = Mid(sEingabe, 3, 2)
sJahr = Right(sEingabe, 4)
End If
sDatum = sTag & "." & sMonat & "." & sJahr
If IsDate(sDatum) Then
Me.TextBox1.Value = sDatum
Else
With TextBox1
.Value = ""
.SetFocus
.SelStart = 0
.SelLength = Len(.Text)
End With
End If
Application.EnableEvents = True
On Error GoTo 0
End If
If Not IsDate(TextBox1.Text) Then
MsgBox "Bitte ein richtiges Datum eingeben!"
With TextBox1
.Value = ""
.SetFocus
.SelStart = 0
.SelLength = Len(.Text)
End With
End If
Exit Sub
Fehler:
Application.EnableEvents = True
End Sub


Ich möchte jetzt nur noch erreichen, dass wenn ein falsches Datum eingeben wird, nach der MsgBox "Bitte ein richtiges Datum eingeben!" der Cursor auf die TextBox1 zurückspringt!
Wie kann ich das erreichen?
mfg
Florian

Anzeige
AW: Inhalt der Textbox in Datum umwandeln
23.05.2007 21:04:00
Rudi
Hallo,
If Not IsDate(TextBox1.Text) Then
Cancel=true
...
...
Gruß
Rudi
Eine Kuh mach muh, viele Kühe machen Mühe.
;
Anzeige
Anzeige

Infobox / Tutorial

Inhalt der Textbox in Datum umwandeln


Schritt-für-Schritt-Anleitung

Um den Inhalt einer Textbox in ein Datumsformat zu konvertieren, kannst du folgendes VBA-Skript verwenden. Dieser Code wandelt verschiedene Eingabeformate in das Format "TT.MM.JJJJ" um. Stelle sicher, dass du diesen Code in das entsprechende UserForm einfügst:

Private Sub TextBox1_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)
    Dim sDatum As String
    Dim sEingabe As String
    Dim sJahr As String
    Dim sMonat As String
    Dim sTag As String

    If Not Me.TextBox1.Value = "" Then
        Application.EnableEvents = False
        On Error GoTo Fehler
        sEingabe = CStr(CLng(Trim(Me.TextBox1.Value)))

        If Left(Me.TextBox1.Value, 1) = "0" Or Len(sEingabe) = 5 Or Len(sEingabe) = 7 Then
            sEingabe = "0" & sEingabe
        End If

        If Len(sEingabe) = 6 Then
            sTag = Left(sEingabe, 2)
            sMonat = Mid(sEingabe, 3, 2)
            sJahr = Right(sEingabe, 2)
            sJahr = IIf(Val(sJahr) > 30, "19" & sJahr, "20" & sJahr)
        ElseIf Len(sEingabe) = 8 Then
            sTag = Left(sEingabe, 2)
            sMonat = Mid(sEingabe, 3, 2)
            sJahr = Right(sEingabe, 4)
        End If

        sDatum = sTag & "." & sMonat & "." & sJahr
        If IsDate(sDatum) Then
            Me.TextBox1.Value = sDatum
        Else
            MsgBox "Bitte ein richtiges Datum eingeben!"
            Me.TextBox1.SetFocus
        End If
        Application.EnableEvents = True
        On Error GoTo 0
    End If
End Sub

Häufige Fehler und Lösungen

  1. Fehler: Ungültiges Datum wird akzeptiert

    • Lösung: Stelle sicher, dass du die IsDate()-Funktion verwendest, um ungültige Datumsangaben zu filtern.
  2. Fehler: Cursor springt nicht zurück zur Textbox

    • Lösung: Füge Me.TextBox1.SetFocus nach der MsgBox hinzu, um den Fokus zurück zur Textbox zu setzen.

Alternative Methoden

Eine alternative Methode zur Umwandlung von Datumseingaben ist die Nutzung von Excel-Formeln, wenn keine VBA-Programmierung gewünscht ist. Die Formel =DATUM(JAHR(A1);MONAT(A1);TAG(A1)) kann verwendet werden, um ein Datum aus separaten Zellen zu erstellen. Diese Methode ist jedoch nicht so flexibel wie VBA.


Praktische Beispiele

  1. Eingabe: 01012007

    • Ausgabe: 01.01.2007
  2. Eingabe: 010107

    • Ausgabe: 01.01.2007
  3. Eingabe: 31022020

    • Ausgabe: 31.02.2020 (wird als ungültig erkannt)

Tipps für Profis

  • Nutze die Format()-Funktion, um die Ausgabe in verschiedenen Formaten anzuzeigen, z.B. Format(TextBox1.Value, "dd.mm.yyyy").
  • Um die Benutzerfreundlichkeit zu verbessern, kannst du Platzhalter in die Textbox einfügen, die das erwartete Format anzeigen.
  • Implementiere eine Validierung für die Eingabe, um sicherzustellen, dass nur numerische Werte eingegeben werden.

FAQ: Häufige Fragen

1. Wie kann ich das Datum in ein anderes Format umwandeln? Du kannst die Format()-Funktion verwenden, um das Datum in ein gewünschtes Format zu konvertieren.

2. Welche Excel-Version wird benötigt? Der Code funktioniert in Excel-Versionen ab 2007, die VBA unterstützen. Achte darauf, dass Makros aktiviert sind.

3. Was passiert, wenn ich ein falsches Datum eingebe? Wenn ein ungültiges Datum eingegeben wird, erscheint eine MsgBox, die dich auffordert, ein korrektes Datum einzugeben, und der Cursor springt zurück zur Textbox.

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