RESPONDER UNA PREGUNTA

Si para responder la pregunta, crees necesario enviar un archivo adjunto, puedes hacerlo a traves del correo [email protected]

    Pregunta:  67965 - GOTFOCUS, LOSTFOCUS VB&
Autor:  cyndy rdz
Estoy haciendo una aplicacion muy sencilla para capturar una Fecha Inicio y una Fecha Fin, al perder el Focus en fechaini verifico que sea una fecha válida, si no, despliego un MSG de error y le vuelvo a mandar el Focus para que la capture, no sé porque se me cicla y se va y valida la fecha fin el código es:
Private Sub txtFechaIni_LostFocus()

If txtFechaIni.Text = "" Then
MsgBox "--- Debe proporcionar una fecha INICIO válida--- "
GoTo ErrorEnFecha
End If

dia = Val(Mid(txtFechaIni.Text, 1, 2))
mes = Val(Mid(txtFechaIni.Text, 4, 2))
ano = Val(Mid(txtFechaIni.Text, 7, 4))
Select Case mes
Case 1, 3, 5, 7, 8, 10, 12
If dia < 1 Or dia > 31 Then
MsgBox "Error en el día"
GoTo ErrorEnFecha
End If
Case 4, 6, 9, 11
If dia < 1 Or dia > 30 Then
MsgBox "Error en el día"
GoTo ErrorEnFecha
End If
Case 2
If ano / 4 = Int(ano / 4) And (dia < 1 Or dia > 29) Then
MsgBox "Error en el día"
GoTo ErrorEnFecha
End If
If ano / 4 <> Int(ano / 4) And (dia < 1 Or dia > 28) Then
MsgBox "Error en el día"
GoTo ErrorEnFecha
End If
Case Else
MsgBox "Error en el mes"
GoTo ErrorEnFecha
End Select
If ano < 1986 Or ano > Year(Date) Then
MsgBox "Error en el año"
GoTo ErrorEnFecha
End If

Exit Sub

ErrorEnFecha:
txtFechaIni.SetFocus

End Sub

Y PARA FECHA FIN:

Private Sub txtFechaFin_LostFocus()

If txtFechaFin.Text = "" Then
MsgBox "Debe proporcionar una fecha FIN válida"
GoTo ErrorEnFechaFin
End If
dia = Val(Mid(txtFechaFin.Text, 1, 2))
mes = Val(Mid(txtFechaFin.Text, 4, 2))
ano = Val(Mid(txtFechaFin.Text, 7, 4))
Select Case mes
Case 1, 3, 5, 7, 8, 10, 12
If dia < 1 Or dia > 31 Then
MsgBox "Error en el día"
GoTo ErrorEnFechaFin
End If
Case 4, 6, 9, 11
If dia < 1 Or dia > 30 Then
MsgBox "Error en el día"
GoTo ErrorEnFechaFin
End If
Case 2
If ano / 4 = Int(ano / 4) And (dia < 1 Or dia > 29) Then
MsgBox "Error en el día"
GoTo ErrorEnFechaFin
End If
If ano / 4 <> Int(ano / 4) And (dia < 1 Or dia > 28) Then
MsgBox "Error en el día"
GoTo ErrorEnFechaFin
End If
Case Else
MsgBox "Error en el mes"
GoTo ErrorEnFechaFin
End Select
If ano < 1986 Or ano > Year(Date) Then
MsgBox "Error en el año"
GoTo ErrorEnFechaFin
End If
Exit Sub

SI NO CAPTURO NADA EN FECHA INI Y DOY UN TAB, ME DA EL ERROR DE FECHA INI, LE DOY ACEPTAR, Y ME DA EL ERROR DE FECHA FIN, LE DOY ACEPTAR Y ME DA EL ERROR DE FECHA INI Y ASÍ SUCESIVAMENTE Y NO ME DEJA CAPTURAR LA FECHA


Nombre
Apellidos
Correo
Comentarios