Der Code benötigt eine Userform1, darauf eine TextBox1 und einen SpinButton1 (Drehfeld).
Für den Aufruf der Userform legen wir fest, dass das Maximum des SpinButtons gesetzt wird, hier 401768 für den 31.12.2999. Au�erdem soll in der TextBox das aktuelle Datum angezeigt und beim SpinButton der Wert des aktuellen Datums eingestellt werden:
Private Sub UserForm_Initialize()
SpinButton1.Max = 401768
TextBox1.Value = Format(Now, "dd.mm.yyyy")
SpinButton1.Value = CLng(CDate(TextBox1.Value))
End Sub
Dem SpinButton weisen wir zu, dass beim Betätigen dessen Wert im Datumsformat in die Textbox eingetragen wird:
Private Sub SpinButton1_Change()
TextBox1.Text = Format(SpinButton1.Value, "dd.mm.yyyy")
End Sub
Fehlt noch die TextBox - wenn dort ein gültiges Datum (Angaben durch Punkt oder Minus getrennt) eingetragen wird, soll der Wert dieses Datums dem SpinButton zugewiesen werden, damit bei dessen Betätigen in der Textbox das vorherige oder nächste Datum eingetragen wird:
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If Not IsDate(TextBox1.Text) Then
MsgBox "Die Eingabe ist kein gültiges Datum."
TextBox1.Text = Format(SpinButton1.Value, "dd.mm.yyyy")
Exit Sub
End If
SpinButton1.Value = CLng(CDate(TextBox1.Text))
End Sub
Der Code zum Kopieren:
Private Sub UserForm_Initialize()
SpinButton1.Max = 401768
TextBox1.Value = Format(Now, "dd.mm.yyyy")
SpinButton1.Value = CLng(CDate(TextBox1.Value))
End Sub
Private Sub SpinButton1_Change()
TextBox1.Text = Format(SpinButton1.Value, "dd.mm.yyyy")
End Sub
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If Not IsDate(TextBox1.Text) Then
MsgBox "Die Eingabe ist kein gültiges Datum."
TextBox1.Text = Format(SpinButton1.Value, "dd.mm.yyyy")
Exit Sub
End If
SpinButton1.Value = CLng(CDate(TextBox1.Text))
End Sub