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

Forumthread: Datum aus TextBox auch als Datum speichern

Datum aus TextBox auch als Datum speichern
25.06.2018 09:49:03
Wilfried
Guten Morgen,
ich habe folgende Problemstellung:
In einer Userform befinden sich mehrere TextBoxen. In diesen werden sowohl Text (Adressen) aber auch Einträge als Datum erfasst.
Das Problem besteht darin, dass das Datum in der Tabelle jedoch als Text gespeichert wird. Das würde ich sehr gerne ändern.
Auszug aus dem VBA Code:
'##########################################################
Option Explicit
Option Compare Text
'Wie viele TextBoxen sind auf der UserForm platziert?
Private Const iCONST_ANZAHL_EingabeFELDER As Integer = 65
'##########################################################
'so sieht der Code aus, der alle Inhalte als Text speichert:
Private Sub EINTRAG_SPEICHERN()
Dim lZeile As Long
Dim i As Integer
'Wenn kein Datensatz in der ListBox markiert wurde, wird die Routine beendet
If ListBox1.ListIndex = -1 Then Exit Sub
'Zum Speichern benötigen wir die Zeilennummer des ausgewählten Datensatzes
lZeile = ListBox1.List(ListBox1.ListIndex, 0)
For i = 1 To iCONST_ANZAHL_EingabeFELDER
Tabelle4.Cells(lZeile, i) = Me.Controls("TextBox" & i)
Next i
'####################################################################
Mein Versuch die entsprechenden TextBoxen als Datum zu speichern:
Private Sub EINTRAG_SPEICHERN()
Dim lZeile As Long
Dim i As Integer
'Wenn kein Datensatz in der ListBox markiert wurde, wird die Routine beendet
If ListBox1.ListIndex = -1 Then Exit Sub
'Zum Speichern benötigen wir die Zeilennummer des ausgewählten Datensatzes
lZeile = ListBox1.List(ListBox1.ListIndex, 0)
For i = 1 To iCONST_ANZAHL_EingabeFELDER
Tabelle4.Cells(lZeile, i) = Me.Controls("TextBox" & i)
'Werte als Datum in Tabelle4 (Anfragen) speichern
Tabelle4.Cells(lZeile, 4).Value = CDate(TextBox4)
Tabelle4.Cells(lZeile, 5).Value = CDate(TextBox5)
Tabelle4.Cells(lZeile, 6).Value = CDate(TextBox6)
Tabelle4.Cells(lZeile, 13).Value = CDate(TextBox13)
Tabelle4.Cells(lZeile, 22).Value = CDate(TextBox22)
Tabelle4.Cells(lZeile, 23).Value = CDate(TextBox23)
Next i
For i = 1 To iconst_checkboxen
Tabelle4.Cells(lZeile, i + 75).Value = IIf(Me.Controls("Checkbox" & CStr(i)).Value, "Ja", "Nein")
Next i
Für die TextBoxen 4,5 und 6 funktioniert der eingefügte Code und der Eintrag wird als Datum gespeichert.
Es kommt jedoch ab TextBox 13 zu einem Laufzeitfehler '13' Typen unverträglich
Ich kann zwischen den TextBoxen 4,5,6 und 13, 22,23 keinen Unterschied feststellen.
Es würde mich sehr freuen, wenn mir jemand mit einem Tipp weiterhelfen könnte.
Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Datum aus TextBox auch als Datum speichern
25.06.2018 13:22:25
Wilfried
Hallo Bernd,
ich habe zwischenzeitlich einiges probiert, ohne jedoch den finalen Erfolg.
Ich vermute, dass der Inhalt der TextBoxen zunächst als Datum formatiert werden muss.
Mir gelingt es allerdings nicht dies in die bestehende Schleife zu integrieren.
Kannst Du helfen?
'###################################################################
'Ich vermute, dass hier eine Abfrage sein müsste:
' Bist due TextBox 4,5,6,13,22,23,25,26 usw. Dann Ist das Format ein Datum:
'wie müsste der Code aussehen?
For i = 1 To iCONST_ANZAHL_EingabeFELDER
Tabelle4.Cells(lZeile, i) = Me.Controls("TextBox" & i)
'Werte als Datum in Tabelle4 (Anfragen) speichern
Tabelle4.Cells(lZeile, 4).Value = CDate(TextBox4)
Tabelle4.Cells(lZeile, 5).Value = CDate(TextBox5)
Tabelle4.Cells(lZeile, 6).Value = CDate(TextBox6)
If Tabelle4.Cells(lZeile, i) = TextBox13 Then
TextBox13 = Format(Date, "DD.MM.YY")
Tabelle4.Cells(lZeile, 13).Value = CDate(TextBox13)
End If
If Tabelle4.Cells(lZeile, i) = TextBox22 Then
TextBox22 = Format(Date, "DD.MM.YY")
Tabelle4.Cells(lZeile, 22).Value = CDate(TextBox13)
End If
If Tabelle4.Cells(lZeile, i) = TextBox23 Then
TextBox23 = Format(Date, "DD.MM.YY")
Tabelle4.Cells(lZeile, 23).Value = CDate(TextBox13)
End If
'Tabelle4.Cells(lZeile, 25).Value = CDate(TextBox25)
'Tabelle4.Cells(lZeile, 26).Value = CDate(TextBox26)
'Tabelle4.Cells(lZeile, 30).Value = CDate(TextBox30)
'Tabelle4.Cells(lZeile, 31).Value = CDate(TextBox31)
'Tabelle4.Cells(lZeile, 35).Value = CDate(TextBox35)
Kannst Du helfen?
Anzeige
AW: Datum aus TextBox auch als Datum speichern
25.06.2018 13:22:27
Wilfried
Hallo Bernd,
ich habe zwischenzeitlich einiges probiert, ohne jedoch den finalen Erfolg.
Ich vermute, dass der Inhalt der TextBoxen zunächst als Datum formatiert werden muss.
Mir gelingt es allerdings nicht dies in die bestehende Schleife zu integrieren.
Kannst Du helfen?
'###################################################################
'Ich vermute, dass hier eine Abfrage sein müsste:
' Bist due TextBox 4,5,6,13,22,23,25,26 usw. Dann Ist das Format ein Datum:
'wie müsste der Code aussehen?
For i = 1 To iCONST_ANZAHL_EingabeFELDER
Tabelle4.Cells(lZeile, i) = Me.Controls("TextBox" & i)
'Werte als Datum in Tabelle4 (Anfragen) speichern
Tabelle4.Cells(lZeile, 4).Value = CDate(TextBox4)
Tabelle4.Cells(lZeile, 5).Value = CDate(TextBox5)
Tabelle4.Cells(lZeile, 6).Value = CDate(TextBox6)
If Tabelle4.Cells(lZeile, i) = TextBox13 Then
TextBox13 = Format(Date, "DD.MM.YY")
Tabelle4.Cells(lZeile, 13).Value = CDate(TextBox13)
End If
If Tabelle4.Cells(lZeile, i) = TextBox22 Then
TextBox22 = Format(Date, "DD.MM.YY")
Tabelle4.Cells(lZeile, 22).Value = CDate(TextBox13)
End If
If Tabelle4.Cells(lZeile, i) = TextBox23 Then
TextBox23 = Format(Date, "DD.MM.YY")
Tabelle4.Cells(lZeile, 23).Value = CDate(TextBox13)
End If
'Tabelle4.Cells(lZeile, 25).Value = CDate(TextBox25)
'Tabelle4.Cells(lZeile, 26).Value = CDate(TextBox26)
'Tabelle4.Cells(lZeile, 30).Value = CDate(TextBox30)
'Tabelle4.Cells(lZeile, 31).Value = CDate(TextBox31)
'Tabelle4.Cells(lZeile, 35).Value = CDate(TextBox35)
Kannst Du helfen?
Anzeige
AW: Datum aus TextBox auch als Datum speichern
25.06.2018 16:17:38
Bernd
Hi,
schon mal den Link angeschaut?
Dort findest du folgenden Code...
Private Sub TextBox2_AfterUpdate()
TextBox2 = Format(TextBox2, "DD.MM.YYYY").Text
End Sub
PS. Textboxen anpassen
AW: Datum aus TextBox auch als Datum speichern
27.06.2018 10:42:15
Wilfried
Hallo Bernd,
Vielen Dank für deine tolle Unterstützung.
Es hat bei mir etwas gedauert aber jetzt funktioniert es.
Viele Grüße
Wilfried
Anzeige
AW: Datum aus TextBox auch als Datum speichern
25.06.2018 13:32:54
Wilfried
Das Problem besteht weiterhin, hatte ich vergessen anzukreuzen.
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Datum aus TextBox in Excel UserForm speichern


Schritt-für-Schritt-Anleitung

Um das Datum aus einer TextBox in einer Excel UserForm korrekt zu speichern, kannst du die folgenden Schritte befolgen:

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

  2. UserForm auswählen: Wähle die UserForm aus, in der sich die TextBoxen befinden.

  3. Code anpassen: Im Code der UserForm solltest du die Methode EINTRAG_SPEICHERN anpassen, um das Datum korrekt zu speichern. Hier ist ein Beispiel:

    Private Sub EINTRAG_SPEICHERN()
       Dim lZeile As Long
       Dim i As Integer
    
       If ListBox1.ListIndex = -1 Then Exit Sub
       lZeile = ListBox1.List(ListBox1.ListIndex, 0)
    
       For i = 1 To iCONST_ANZAHL_EingabeFELDER
           Tabelle4.Cells(lZeile, i) = Me.Controls("TextBox" & i)
    
           ' Überprüfen, ob es sich um eine Datum-TextBox handelt
           Select Case i
               Case 4, 5, 6, 13, 22, 23
                   Tabelle4.Cells(lZeile, i).Value = CDate(Me.Controls("TextBox" & i).Value)
               Case Else
                   ' Andere TextBoxen ohne Datum
           End Select
       Next i
    End Sub
  4. Testen: Führe die UserForm aus und teste, ob die Daten korrekt in der Excel-Tabelle gespeichert werden.


Häufige Fehler und Lösungen

  • Laufzeitfehler '13' - Typen unverträglich:

    • Dieser Fehler tritt auf, wenn der Inhalt einer TextBox nicht in ein Datum umgewandelt werden kann. Überprüfe, ob die Eingabewerte in den TextBoxen dem Datumformat entsprechen (z.B. "DD.MM.YYYY").
  • Datum wird als Text gespeichert:

    • Stelle sicher, dass die Zellen in Excel als Datum formatiert sind. Du kannst dies manuell in Excel tun oder im VBA-Code das Format anpassen.

Alternative Methoden

Eine alternative Möglichkeit, das Datum zu formatieren, besteht darin, die AfterUpdate-Ereignisse der TextBoxen zu verwenden. Hier ein Beispiel, wie du das Datum direkt beim Verlassen der TextBox formatieren kannst:

Private Sub TextBox4_AfterUpdate()
    TextBox4.Value = Format(TextBox4.Value, "DD.MM.YYYY")
End Sub

Verwende diese Methode für alle relevanten TextBoxen, um sicherzustellen, dass das Datum korrekt eingegeben wird.


Praktische Beispiele

Hier sind einige Beispiele, wie du verschiedene TextBoxen für Datumseingaben konfigurieren kannst:

  • TextBox für Startdatum:

    Private Sub TextBox4_AfterUpdate()
       If IsDate(TextBox4.Value) Then
           TextBox4.Value = Format(TextBox4.Value, "DD.MM.YYYY")
       End If
    End Sub
  • TextBox für Enddatum:

    Private Sub TextBox5_AfterUpdate()
       If IsDate(TextBox5.Value) Then
           TextBox5.Value = Format(TextBox5.Value, "DD.MM.YYYY")
       End If
    End Sub

Diese Beispiele helfen dir, Eingabefehler zu minimieren und die Benutzerfreundlichkeit der UserForm zu verbessern.


Tipps für Profis

  • Nutze IsDate() zur Validierung der Eingaben, bevor du versuchst, sie in ein Datum zu konvertieren.
  • Setze die TextBoxen so, dass sie nur Datumseingaben akzeptieren, indem du die Eingabemethode entsprechend anpasst.
  • Implementiere Fehlerbehandlungsroutinen, um Laufzeitfehler zu vermeiden und eine bessere Benutzererfahrung zu gewährleisten.

FAQ: Häufige Fragen

1. Wie kann ich sicherstellen, dass das Datum im richtigen Format gespeichert wird?
Verwende die Format()-Funktion in deinem VBA-Code, um sicherzustellen, dass das Datum in dem gewünschten Format gespeichert wird.

2. Was kann ich tun, wenn eine TextBox einen Fehler verursacht?
Überprüfe die Eingabe in der TextBox und stelle sicher, dass sie dem Datumsformat entspricht. Verwende IsDate(), um dies zu überprüfen.

3. Welche Excel-Version ist erforderlich, um diese Funktionen zu nutzen?
Die beschriebenen Funktionen sind in Excel 2016 und höher verfügbar. Stelle sicher, dass du die richtigen Einstellungen in deinem Excel hast.

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