Problema en un formulario donde debo ingresar una fecha

Tengo un problema con un TextBox en el cual debo ingresar una fecha, en dicho campo si lo que se ingresa no es una fecha o el campo se pretende dejar vacío debe aparecer un mensaje que diga "Ingrese una fecha con formato DD/MM/AA" también debe limpiar el TextBox y dejar el cursor en el mismo, al parecer todo funcionaba bien pero cuando cierro el formulario me quedan los cuadros de mensaje como si no hubiese dado aceptar al mensaje cuando este apareció a continuación dejo el código que estoy usando y espero me puedan explicar cual es el error que estoy cometiendo y me deja siempre los mensajes de error.

Mil gracias

Este es el código:

Private Sub Fecha_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If Fecha = "" Then
MsgBox ("Ingrese una fecha con formato DD/MM/AAAA")
Me.Fecha = ""
Me.Fecha.SetFocus
End If
If Not IsDate(Fecha) Then Cancel = True
MsgBox ("Ingrese una fecha con formato DD/MM/AAAA")
Me.Fecha = ""
Me.Fecha.SetFocus
End Sub

1 respuesta

Respuesta
1

Te anexo la macro con los cambios, en los controles te explico lo que se hace.

Primero debes declarar la variable salir al inicio de todo tu código

Dim salir
'
Private Sub Fecha_Exit(ByVal Cancel As MSForms.ReturnBoolean)
'Act.Por.Dante Amor
    'si salir igual a 0, entonces significa que estás cerrando el form
    If salir = 0 Then Exit Sub
    If Fecha = "" Then
        MsgBox ("Ingrese una fecha con formato DD/MM/AAAA")
        Me.Fecha = ""
        Me.Fecha.SetFocus
        Cancel = True
    Else
        If Not IsDate(Fecha) Or Len(Fecha) <> 10 Then
            MsgBox ("Ingrese una fecha con formato DD/MM/AAAA")
            Me.Fecha = ""
            Me.Fecha.SetFocus
            Cancel = True
        End If
    End If
End Sub
'
Private Sub UserForm_Activate()
'Por.Dante Amor
    'se inicia la variable salir con 1
    salir = 1
End Sub
'
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
'Por.Dante Amor
    'si estás cerrando el form salir cambia a 0
    If CloseMode = 0 Then
        salir = 0
    End If
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas