Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: VBA Text in Datum Formatieren

VBA Text in Datum Formatieren
29.10.2016 13:01:18
Sven
Hallo Excelgemeinde,
ich habe eine Tabelle die nach Datum sortiert werden soll.
Diese Tabelle erweitert sich je nach umfang und wird mittels UserForm und den TextBoxen befüllt. Das Datum steht immer in Reihe D.
Nun Speichern die TextBoxen ja alles in Textform und somit ist eine automatische Sortierung nach Datum nicht mehr möglich, weil das Datum ja als Text gespeichert wird.
Gibt es eine Lösung mit VBA um bei beenden der UserForm bzw. beim eintragen in die TextBox, welche dann die Zelle Automatisch in das Datumsformat umwandelt und die Tabelle sortierbar macht ?
Gruß
Sven
Anzeige

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Text in Datum Formatieren
29.10.2016 13:12:54
Nepumuk
Hallo,
ein Beispiel:
Cells(1, 4).Value = CDate(TextBox1.Text)

Wobei ich davon ausgehe das die Zelle als Datum formatiert ist.
Gruß
Nepumuk
AW: VBA Text in Datum Formatieren
29.10.2016 13:20:53
Sven
Hi Nepumuk,
muss ich den Code jetzt im Blatt Schrieben oder in der TextBox im Userform ?
Gruß
Sven
Anzeige
AW: VBA Text in Datum Formatieren
29.10.2016 13:46:51
Gerd
Hallo Sven,
sowie du schreibst, hast du schon Code, oder?
Private Sub CommandButton1_Click()
If IsDate(UserForm1.TextBox1.Text) Then
Tabelle1.Cells(Tabelle1.Rows.Count, 4).End(xlUp).Offset(1, 0).Value = CDate(UserForm1. _
TextBox1.Text)
End If

End Sub
Gruß Gerd
Anzeige
AW: VBA Text in Datum Formatieren
29.10.2016 14:07:13
Sven
Hi Gerd,
danke dir :-)
Geht super :-)
LG
Sven
AW: VBA Text in Datum Formatieren
29.10.2016 16:29:16
Sven
Hi Gerd,
ich nochmal.
Also Alleine geht es.
Aber kann man es hier in den Code einfügen ?
'Speichern Schaltfläche Ereignisroutine
Private Sub CommandButtonSpeichernFiliale_Click()
Dim lZeile As Long
'Wenn kein Datensatz in der ListBox markiert wurde, wird die Routine beendet
If ListBoxFilialnummer.ListIndex = -1 Then Exit Sub
'Wir müssen prüfen, ob die ID Spalte auch gefüllt ist!!
If Trim(CStr(TextBoxFilialnummer.Text)) = "" Then
'Meldung ausgeben
MsgBox "Sie müssen mindestens einen Namen eingeben!", vbCritical + vbOKOnly, "FEHLER!"
'Abbrechen der Speicherroutine
Exit Sub
End If
'Ausbauoption: Prüfen, ob die ID in Tabelle1 Spalte 1 schon vorhanden ist!
'Zum Speichern benötigen wir die Zeilennummer des ausgewählten Datensatzes
lZeile = 2 'Start in Zeile 2, Zeile 1 sind ja die Überschriften
'Schleife solange etwas in der ersten Spalte in Tabelle 1 drin steht
Do While Trim(CStr(Tabelle3.Cells(lZeile, 1).Value))  ""
'Datensatz ID Spalte mit selektiertem Eintrag der ListBox vergleichen
If ListBoxFilialnummer.Text = Trim(CStr(Tabelle3.Cells(lZeile, 1).Value)) Then
'Eintrag gefunden, TextBoxen in die Zellen schreiben
Tabelle3.Cells(lZeile, 1).Value = Trim(CStr(TextBoxFilialnummer.Text))
Tabelle3.Cells(lZeile, 2).Value = TextBoxFiliale.Text
Tabelle3.Cells(lZeile, 3).Value = TextBoxOrt.Text
Tabelle3.Cells(lZeile, 4).Value = TextBoxJahr.Text
Tabelle3.Cells(lZeile, 5).Value = TextBoxFilialleiter.Text
'Die ListBox muss nun neu geladen werden
'allerdings nur, wenn sich der Name (ID) geändert hat
If ListBoxFilialnummer.Text  Trim(CStr(TextBoxFilialnummer.Text)) Then
Call UserForm_Initialize
If ListBoxFilialnummer.ListCount > 0 Then ListBoxFilialnummer.ListIndex = 0
End If
Exit Do 'Vorzeitiges Ende, da der Datensatz schon gefunden ist
End If
lZeile = lZeile + 1 'Nächste Zeile bearbeiten
Loop
End Sub

Gruß
Sven
Anzeige
AW: VBA Text in Datum Formatieren
29.10.2016 17:33:25
Werner
Hallo Sven,
das einzige was ich jetzt sehe, wo ein Datum drin stehen könnte ist die Codezeile hier
Tabelle3.Cells(lZeile, 4).Value = TextBoxJahr.Text
dann so
Tabelle3.Cells(lZeile, 4).Value = CDate(TextBoxJahr.Text)
Oder steht da nur eine Jahreszahl wie 2016 drin?
Gruß Werner
Anzeige
AW: VBA Text in Datum Formatieren
29.10.2016 18:27:44
Sven
Hi Werner ,
Jupp genau so :-)
Danke für die Hilfe :-)
Hätte ich ja auch mal selbst drauf kommen können :-)
Läuft jetzt
Danke
Gruß
Sven
AW: Gerne u. Danke für die Rückmeldung. o.w.T.
29.10.2016 19:37:28
Werner
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

VBA Text in Datum umwandeln


Schritt-für-Schritt-Anleitung

  1. Öffne den VBA-Editor: Drücke ALT + F11, um den Editor zu öffnen.

  2. Füge ein UserForm hinzu: Gehe zu Einfügen > UserForm.

  3. Füge TextBoxen und Schaltflächen hinzu: Platziere die benötigten TextBoxen für die Dateneingabe und eine Schaltfläche zum Speichern.

  4. Code zur Umwandlung hinzufügen: Verwende den folgenden Code, um den Text aus der TextBox in ein Datum umzuwandeln:

    Private Sub CommandButtonSpeichern_Click()
       If IsDate(TextBox1.Text) Then
           Cells(1, 4).Value = CDate(TextBox1.Text)
       Else
           MsgBox "Bitte ein gültiges Datum eingeben."
       End If
    End Sub
  5. Zelle formatieren: Stelle sicher, dass die Zielzelle als Datum formatiert ist:

    Cells(1, 4).NumberFormat = "dd.mm.yyyy"

Häufige Fehler und Lösungen

  • Fehler: Ungültiges Datum

    • Lösung: Stelle sicher, dass das Datum korrekt eingegeben wurde. Verwende IsDate, um die Eingabe zu überprüfen.
  • Fehler: Zelle wird nicht als Datum erkannt

    • Lösung: Formatierte die Zelle vorher mit NumberFormat.

Alternative Methoden

  • Direktes Umwandeln im Arbeitsblatt: Du kannst auch die Funktion CDate direkt in einer Zelle verwenden, um einen Text in ein Datum umzuwandeln:

    =CDate(A1)
  • Verwendung von Power Query: Importiere die Daten in Power Query und wandle den Text dort in ein Datum um.


Praktische Beispiele

  1. Umwandlung von Jahr in Datum:

    Tabelle3.Cells(lZeile, 4).Value = CDate(TextBoxJahr.Text)
  2. Umwandlung mit einer Eingabeaufforderung:

    Dim inputDate As String
    inputDate = InputBox("Gib ein Datum ein:")
    If IsDate(inputDate) Then
       Cells(1, 4).Value = CDate(inputDate)
    End If

Tipps für Profis

  • VBA-Formatierung: Nutze Format in VBA, um das Datum in ein bestimmtes Format zu bringen:

    Cells(1, 4).Value = Format(CDate(TextBox1.Text), "dd.mm.yyyy")
  • Automatisierung: Du kannst das Umwandeln bei bestimmten Ereignissen automatisieren, z.B. beim Verlassen der TextBox:

    Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
       If IsDate(TextBox1.Text) Then
           TextBox1.Text = Format(CDate(TextBox1.Text), "dd.mm.yyyy")
       End If
    End Sub

FAQ: Häufige Fragen

1. Wie kann ich sicherstellen, dass das Datum richtig formatiert wird? Um sicherzustellen, dass das Datum richtig formatiert wird, solltest du die Zielzelle vorher mit NumberFormat als Datum formatieren.

2. Was mache ich, wenn ich nur das Jahr habe? Wenn du nur das Jahr hast, kannst du es in ein Datum umwandeln, indem du den ersten Tag des Jahres verwendest:

Cells(1, 4).Value = DateSerial(TextBoxJahr.Text, 1, 1)

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige