En kombi løsning:
Private Sub TextBox4_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If KeyAscii >= 48 And KeyAscii <= 57 Or KeyAscii = 8 Then 'Kun tal og backspace
If KeyAscii = 8 Then 'Hvis backspace, ignoreres + "-"
Else
If TextBox4.TextLength = 10 Then 'Begrænser textbox til 10 karaktere
KeyAscii = 0
Else
If TextBox4.TextLength = 2 Or TextBox4.TextLength = 5 Then 'Tilføjer - automatisk
TextBox4.Text = TextBox4.Text + "-"
End If
End If
End If
Else
KeyAscii = 0
End If
End Sub
Private Sub TextBox4_Change()
'Dag
If Val(Left(TextBox4, 1)) < 0 Then TextBox4 = Left(TextBox4, Len(TextBox4) - 1) '1 tal i dag min 0
If Val(Mid(TextBox4, 2, 1)) < 0 Then TextBox4 = Left(TextBox4, Len(TextBox4) - 1) 'andet tal i dag min 0
If Val(Left(TextBox4, 1)) > 3 Then TextBox4 = Left(TextBox4, Len(TextBox4) - 1) '1 tal i dag max 3
If Val(Left(TextBox4, 2)) > 31 Then TextBox4 = Left(TextBox4, Len(TextBox4) - 1) '1&2 tal i dag max 31
'Måned
If Val(Mid(TextBox4, 4, 1)) > 1 Then TextBox4 = Left(TextBox4, Len(TextBox4) - 1) '1 tal i måned max 1
If Val(Mid(TextBox4, 4, 2)) > 12 Then TextBox4 = Left(TextBox4, Len(TextBox4) - 1) '1&2 tal i måned max 12
End Sub
Private Sub TextBox4_Exit(ByVal Cancel As MSForms.ReturnBoolean)
'Tjekker er dato
If IsDate(TextBox4) = False Then
MsgBox "Indtast dato som: ddmmåååå" _
+ vbLf + vbLf + _
"Feltet bliver slettet.", , "Ikke en Dato!!"
TextBox4 = ""
Exit Sub
End If
TextBox4.Value = Format(TextBox4.Value, "dd/mm/yyyy")
End Sub
Indtast kun tal, bindestreg tilføjes automatisk.