Verificar Valides de una fecha


Esta función recibe una fecha en formato de dato Variant convencional y comprueba que esté dentro de las posibilidades (que no sea 30 de febrero, que sea correcto el formato, etc). De haber algún problema presenta una paleta de advertencia y retorna como resultado de función el valor False. De no haber problemas retorna True y no presenta mensaje alguno.

El código de esta función es bastante fácil de entender, aunque es extenso por tratarse de manejo de errores y conversión entre tipos de datos. Este debe ser copiado dentro de cualquier modulo BAS del proyecto.

Function VerificarFECHA (Fecha As Variant) As Integer
'Resultado positivo por omisión.
VerificarFECHA = True

'Verifica el tamaño de la fecha.
If Len(Fecha) <> 10 Then GoSub Mensaje: Exit Function

'Prueba de conversión.
On Error GoTo ErrCheck
Test = CVDate(Fecha)

'Puerta de salida.
Salir:
Exit Function

'Trampa y retorno de error.
ErrCheck:
GoSub Mensaje
Resume Salir

'Sub-Rutina de mensaje.
Mensaje:
MsgBox "La fecha ingresada es incorrecta.", 16, "ERROR"
VerificarFECHA = False
Return

End Function

Por último en cada lugar donde se desee verificar la fecha habrá que llamar al a función de la siguiente manera:

Sub Fecha_LostFocus ()
X = VerificarFECHA(Fecha)

End Sub

Nótese que en este caso la función es llamada cuando el objeto que contiene la llamada a la misma pierde el foco. Esto hace que sólo se verifique cuando el usuario abandona el casillero apuntando a otro. En este ejemplo se descartó el resultado asignándolo a una variable cualquiera a la que no se le da atención. Otra opción es usar el resultado para controlar el borrado del casillero.

Sub Fecha_LostFocus ()
If VerificarFECHA(Fecha) = False then Fecha = ""

End Sub

En este caso si la fecha ingresada no es válida el casillero se borra automáticamente.

Autor: Pablo Canello