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 |