Mascara para la fecha en un TextBox que funciona perfectamente pero si deseo borrar con el backspace no lo permite
Tengo una mascara para fecha que me funciona perfectamente en un Textbox y hace todo lo que requiero pero si se equivocan con la fecha y se desea borrar con el backspace después de que muestra el "/" no lo permite. No sé qué será. Si me pueden ayudar les agradecería mucho porque cuando eso pasa las personas tienen que se salirse del formulario y empezar de nuevo. Aquí les coloco la máscara:
Function Mascara_Fecha(ByRef TextBox3 As MSForms.TextBox, _
ByRef b_Borrar As Boolean)
Dim n As Byte, nl As Byte, lt As String
With TextBox3
If .Text = "" Then b_Borrar = False: Exit Function
nl = Len(.Text): lt = Mid(.Text, nl, 1)
Select Case nl
Case Is = 1
If Not IsNumeric(lt) Or Val(lt) > 3 Then .Text = ""
Case Is = 2
If Not IsNumeric(lt) Or Val(.Text) > 31 Or _
Val(.Text) < 1 Then
.Text = Left(.Text, nl - 1)
Else
.Text = .Text & "/"
End If
Case Is = 3
If b_Borrar Then .Text = Left(.Text, 1)
Case Is = 4
If Not IsNumeric(lt) Or _
Val(lt) > 1 Then .Text = Left(.Text, nl - 1)
Case Is = 5
If Not IsNumeric(lt) Or _
Val(Mid(.Text, nl - 1, 1) & lt) > 12 Or _
Val(Mid(.Text, nl - 1, 1) & lt) < 1 Then
.Text = Left(.Text, nl - 1)
Else
.Text = .Text & "/"
End If
Case Is = 6
If b_Borrar Then .Text = Left(.Text, 4)
Case Is = 8
If Not IsNumeric(lt) Or (Left(.Text, 2) = "29" And Mid(.Text, 4, 4) = "02" And _
Val(Right(.Text, 2)) Mod 4 > 0) Then _
.Text = Left(.Text, 11)
Case Is > 8
.Text = Left(.Text, 10)
Case Else
If Not IsNumeric(lt) Then .Text = Left(.Text, nl - 1)
End Select
End With
b_Borrar = False
End Function
En el formulario coloqué esto:
Private Sub TextBox3_Change()
Dim Borrar As Boolean
Mascara_Fecha TextBox3, Borrar
End Sub