validafechas
Publicado por Juanpe (19 intervenciones) el 07/06/2005 12:49:07
la funcion es la de validafechas que se a colgado en la pagina, pero la funcion IsDate hace lo mismo no?gracias
Function ValidaFecha(ByRef wFecha As String) As Boolean
Dim wValores(3) As String
Dim wPos As Integer
Dim wI As Integer
ValidaFecha = True
If Not IsDate(wFecha) Or Len(wFecha) < 10 Then
ValidaFecha = False
Exit Function
End If
wPos = 1
For wI = 1 To Len(wFecha)
If Mid(wFecha, wI, 1) = "/" Or Mid(wFecha, wI, 1) = "-" Then
wPos = wPos + 1
Else
wValores(wPos) = wValores(wPos) & Mid(wFecha, wI, 1)
End If
Next wI
If Val(wValores(1)) = 0 Or Val(wValores(2)) = 0 Or Val(wValores(3)) = 0 Or _
Val(wValores(2)) > 12 Or Val(wValores(1)) > 31 Then
ValidaFecha = False
Exit Function
End If
'***** Validar el Dia del Mes
Select Case Val(wValores(2))
Case 2
If Val(wValores(3)) Mod 4 = 0 Then
If Val(wValores(1)) > 29 Then ValidaFecha = False
Else
If Val(wValores(1)) > 28 Then ValidaFecha = False
End If
Case 1, 3, 5, 7, 8, 10, 12
If Val(wValores(1)) > 31 Then ValidaFecha = False
Case 4, 6, 9, 11
If Val(wValores(1)) > 30 Then ValidaFecha = False
End Select
If ValidaFecha Then
wFecha = Format(Val(wValores(1)), "00") & "-" & _
Format(Val(wValores(2)), "00") & "-" & _
Format(Val(wValores(3)), "0000")
End If
End Function
Function ValidaFecha(ByRef wFecha As String) As Boolean
Dim wValores(3) As String
Dim wPos As Integer
Dim wI As Integer
ValidaFecha = True
If Not IsDate(wFecha) Or Len(wFecha) < 10 Then
ValidaFecha = False
Exit Function
End If
wPos = 1
For wI = 1 To Len(wFecha)
If Mid(wFecha, wI, 1) = "/" Or Mid(wFecha, wI, 1) = "-" Then
wPos = wPos + 1
Else
wValores(wPos) = wValores(wPos) & Mid(wFecha, wI, 1)
End If
Next wI
If Val(wValores(1)) = 0 Or Val(wValores(2)) = 0 Or Val(wValores(3)) = 0 Or _
Val(wValores(2)) > 12 Or Val(wValores(1)) > 31 Then
ValidaFecha = False
Exit Function
End If
'***** Validar el Dia del Mes
Select Case Val(wValores(2))
Case 2
If Val(wValores(3)) Mod 4 = 0 Then
If Val(wValores(1)) > 29 Then ValidaFecha = False
Else
If Val(wValores(1)) > 28 Then ValidaFecha = False
End If
Case 1, 3, 5, 7, 8, 10, 12
If Val(wValores(1)) > 31 Then ValidaFecha = False
Case 4, 6, 9, 11
If Val(wValores(1)) > 30 Then ValidaFecha = False
End Select
If ValidaFecha Then
wFecha = Format(Val(wValores(1)), "00") & "-" & _
Format(Val(wValores(2)), "00") & "-" & _
Format(Val(wValores(3)), "0000")
End If
End Function
Valora esta pregunta
0