Excel Para ELSAMATILDE

Hola Elsa Matilde, tengo un form que tiene un textbox el cual debe capturar fecha de nacimiento con el formato dia/ mes/año y quiero que solo acepte números, buscando una solución a mi problema encontré una que tu diste para otro usuario mediante el siguiente código:
Private Sub TextBox4_Change()
    If Not IsNumeric(TextBox4) Then
        Dim mensaje As String
        mensaje = MsgBox("DEBES ESCRIBIR LA FECHA DE NACIMIENTO EN FORMATO NUMERICO (DD/MM/AA)" & Chr(13) & "ingrésala nuevamente", vbCritical, Title:="DATO INCORRECTO")
        TextBox4 = Empty
TextBox4.SetFocus
    End If
End Sub
Entonces si uno escribe solamente números funciona correctamente, el problema es que como la fecha debe escribirse así por ejemplo: 03/05/1982, al escribir la diagonal "/" ya no acepta los datos.
Espero tu ayuda, saludos.

1 respuesta

Respuesta
1
Con el permiso de elsamatilde, cuya función es la que tú utilizas:
Sólo debes cambiar en el if la condición: "if not isnumeric(textbox4) then" por "if not isdate(textbox4) then". Además, la comprobación la realizamos al salir del campo y no en el momento de teclear la fecha.
Private Sub TextBox2_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    If Not IsDate(TextBox2) Then
        Dim mensaje As String
        mensaje = MsgBox("DEBES ESCRIBIR LA FECHA DE NACIMIENTO CON EL FORMATO  DD/MM/AA" & Chr(13) & "ingrésala nuevamente", vbCritical, Title:="DATO INCORRECTO")
        TextBox2 = Empty
    TextBox2.SetFocus
    End If
End Sub
Hola arico19, muy buena la respuesta, solo que encuentro un pequeño problemita, si el dato en el texbox especificado no es correcto y salgo del campo y posiciono el foco en el siguiente texbox me da la advertencia correcta, pero creo que no cumple con la condición de textbox4.Setofcus, ya que el foco se queda en sl siguiente textbox y entonces si permite que el dato incorrecto se quede. Espero haberme explicado correctamente, Gracias. Espero tu ayuda.
Vuelve al textbox correcto con la instrucciín textbox2. Setfocus
Precisamente es lo que no hace, tengo la instrucción (en mi caso) "TextBox4.SetFocus", pero no pasa nada, y el foco esta en el siguiente textbox que seleccione al salir del textbox en cuestión. Algo más, también he quitado el TextBox4.Empty ya que no deseo que este quede vacío sino que se de la avertencia pero que permanezca el dato para poder corregir. Gracias, espero tu respuesta. Un cordial saludo
He usado una variable para la situación que me indicas. A continuación te envío el código completo. Puede que elsamatilde conozca una solución mejor.
Dim error
Private Sub TextBox2_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    If Not IsDate(TextBox2) Then
        error = "s"
        Dim mensaje As String
        mensaje = MsgBox("DEBES ESCRIBIR LA FECHA DE NACIMIENTO EN FORMATO NUMERICO (DD/MM/AA)" & Chr(13) & "ingrésala nuevamente", vbCritical, Title:="DATO INCORRECTO")
    Else
        error = "n"
    End If
End Sub
Private Sub TextBox3_enter()
If error = "s" Then
 TextBox2.SetFocus
End If
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas