Textbox Datumsformat und Punkte vorgeben
Schritt-für-Schritt-Anleitung
Um das Eingabeformat in einer Excel VBA Textbox so zu gestalten, dass nur das Datumsformat TT.MM.JJJJ zulässig ist und Punkte automatisch ergänzt werden, folge diesen Schritten:
- Öffne den VBA-Editor: Drücke
ALT
+ F11
in Excel.
- Füge ein UserForm hinzu: Klicke auf
Einfügen
> UserForm
.
- Füge Textboxen hinzu: Ziehe die TextBox-Steuerelemente auf das UserForm.
- Erstelle den Code für die Textboxen: Klicke doppelt auf die TextBox, um den Code-Editor für die TextBox zu öffnen.
- Füge den folgenden Code ein:
Private Sub Txt_Datum_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
Select Case KeyAscii
Case Asc("0") To Asc("9")
Case Asc(".")
If Len(Txt_Datum) = 0 Then
KeyAscii = 0
Else
If Len(Txt_Datum) - Len(Application.Substitute(Txt_Datum, ".", "")) = 2 Then
KeyAscii = 0
ElseIf Len(Txt_Datum) > 1 Then
If Mid(Txt_Datum, Len(Txt_Datum), 1) = "." Then
KeyAscii = 0
End If
End If
End If
Case Else
KeyAscii = 0
End Select
End Sub
Private Sub Txt_Datum_Change()
If Len(Txt_Datum) = 2 Then
If InStr(Txt_Datum, ".") = 0 Then
Txt_Datum = Txt_Datum & "."
End If
ElseIf Len(Txt_Datum) = 5 Then
If Len(Txt_Datum) - Len(Application.Substitute(Txt_Datum, ".", "")) = 1 Then
Txt_Datum = Txt_Datum & "."
End If
End If
End Sub
- Teste das UserForm: Schließe den VBA-Editor und teste die Eingabe in deiner UserForm.
Häufige Fehler und Lösungen
-
Fehler: Punkte werden nicht gesetzt: Überprüfe, ob der Code in der KeyPress
- und Change
-Ereignisprozedur korrekt implementiert ist. Wenn der Code nicht funktioniert, kann es an der Logik liegen, die die Eingabe überprüft.
-
Fehler: Eingabe wird blockiert: Stelle sicher, dass keine anderen Ereignisse oder Validierungen in der TextBox vorhanden sind, die die Eingabe unterbrechen könnten.
Alternative Methoden
Eine alternative Methode zur Eingabe von Datumswerten könnte die Verwendung von Dropdown-Listen zur Auswahl von Tag, Monat und Jahr sein. So kannst du sicherstellen, dass die Eingaben immer korrekt sind.
- Erstelle drei ComboBoxen für den Tag, Monat und das Jahr.
- Setze deren Werte vorab, um die Auswahl zu erleichtern.
Praktische Beispiele
Hier ist ein Beispiel, wie du mehrere TextBoxen mit einem einzigen Code ansprechen kannst:
Dim i As Integer
For i = 1 To 18
Set objTextBox = Me.Controls("Txt_Datum" & i)
' Hier kannst du denselben Code wie oben für die TextBoxen anwenden
Next i
Verwende diese Schleife, um den Code für alle TextBoxen zu vereinheitlichen und die Wartung zu erleichtern.
Tipps für Profis
-
Verwenden von Klassen: Wenn du viele TextBoxen hast, erwäge, eine Klasse zu erstellen, die die Logik für die Eingabe und das Format befasst. So kannst du die Wiederverwendbarkeit des Codes erhöhen und die Komplexität reduzieren.
-
Eingabeformat vorgeben: Überlege, ob es sinnvoll ist, das Eingabeformat vorzugeben, z.B. durch eine Formatierungsmethode, die sicherstellt, dass alle Eingaben dem gewünschten Format entsprechen.
FAQ: Häufige Fragen
1. Wie kann ich das Datumsformat für mehrere TextBoxen anwenden?
Du kannst eine Schleife verwenden, um den Code für jede TextBox dynamisch anzuwenden. So musst du den Code nicht für jede TextBox manuell kopieren.
2. Was ist der Vorteil von Klassen in VBA?
Klassen helfen dir, den Code modular zu gestalten, indem sie die Wiederverwendbarkeit erhöhen und die Wartung vereinfachen, besonders bei komplexen Anwendungen mit vielen Steuerelementen.