Yo, partiendo de una función que alguien envió a la lista y con algún cambio
fruto de sugerencias hechas también a la lista, he hecho ésta (que creo que
funciona) para comprobar si una cadena de texto se un valor de fecha válido
según el formato español. El separador tiene que ser el carácter '/'.
============================================================================
===================
Public Function EsFecha(strFecha As String) As Boolean
Dim strDia As String
Dim strMes As String
Dim strAño As String
On Error GoTo Error
strFecha = Trim(strFecha)
strDia = Left(strFecha, InStr(strFecha, "/") - 1)
strMes = Mid(strFecha, Len(strDia) + 2, InStr(Len(strDia) + 2, strFecha,
"/") - Len(strDia) - 2)
strAño = Right(strFecha, Len(strFecha) - InStr(Len(strDia & strMes) + 2,
strFecha, "/"))
If DateSerial(strAño, strMes, strDia) = CDate(strDia + "/" + strMes + "/" +
strAño) And _
Len(strAño) = 4 Then EsFecha = True
Error:
End Function
============================================================================
===================
> Tengo un problema un tanto desconcertante con las fechas
> veréis:
> Mi configuración regional en Windows de la fecha es:
> dd/mm/aa, para validar una fecha utilizo la función IsDate, sin embargo,
> cuando introduzco por ejemplo la fecha: 11/20/98 (Que es errónea), la
> función IsDate me la da como correcta y visualiza: 20/11/98 es decir al
> estilo USA. ¿Porqué?
>
> Este es el código que utilizo
> Private Sub MaskFec_contra_KeyPress(KeyAscii As Integer)
> If KeyAscii = 13 Then
> Wop = IsDate(MaskFec_contra.Text)
> If Wop = False Then
> error_fecha
> Else
> SendKeys "{TAB}"
>
> End If
> End If
> End Sub