Dudas con ElseIF

18/01/2007 - 01:10 por ~ jose ~ | Informe spam
Hola muy buenas,
tengo un problema de sintaxis (creo!)
porque no me funciona bien este código?

Private Sub CommandButton5ModificarDatos_Click()
If Len(TextBox3Titulo.Text) = 0 Then
MsgBox "Es obligatorio poner el título.", vbCritical, "Error al
rellenar el formulario."
TextBox3Titulo.SetFocus
ElseIf Len(TextBox7FechaPrestado.Text) > 0 Then
If Not IsDate(TextBox7FechaPrestado) Then
MsgBox "El formato de la fecha no es correcto.", vbCritical, "Error al
rellenar el formulario."
TextBox7FechaPrestado.SetFocus
ElseIf Len(TextBox8FechaDevuelto.Text) > 0 Then
If Not IsDate(TextBox8FechaDevuelto) Then
MsgBox "El formato de la fecha no es correcto.", vbCritical, "Error al
rellenar el formulario."
TextBox8FechaDevuelto.SetFocus
Else
'AQUI TENGO CÓDIGO QUE RELLENA UNAS CELDAS
End If
End If
End If
End Sub

Si ongo mal el formato de la fecha me lanza el mensaje, esto está
bien, pero si después corrijo la fecha el problema está cuando le
vuelvo a pulsar el botón, que no me rellena las celdas, me pasa
directamente al End If. He visto su comportamiento "paso a paso por
instrucciones".

Que tengo mal?, donde tengo que poner los end if?
He probado mil maneras y ná! no hay manera.

Gracias y un saludo, vale?
jose

Preguntas similare

Leer las respuestas

#1 Héctor Miguel
18/01/2007 - 02:14 | Informe spam
hola, jose !

tengo un problema de sintaxis (creo!) porque no me funciona bien este codigo? [...]
Si pongo mal el formato de la fecha me lanza el mensaje, esto esta bien
pero si despues corrijo la fecha el problema esta cuando le vuelvo a pulsar el boton
que no me rellena las celdas, me pasa directamente al End If.
He visto su comportamiento "paso a paso por instrucciones".
Que tengo mal?, donde tengo que poner los end if?
He probado mil maneras y ná! no hay manera.



si revisas el codigo expuesto con 'sangria' para distinguir los 'niveles' de ejecucion del codigo [al final del presente]...
[seguramente] podras comprobar que la estructura que estas usando...

1) NO te avisa si el largo de los textboxes de fecha es cero -?-
2) si el largo del textbox de fecha 'devuelto' es cero... NO se aplica el codigo que rellena las celdas -?-
3) [solo como comentarios] cuando un codigo If...ElseIf...End If 'entra' a un apartado, se omiten los restantes -?-

comentas [si encuentras} algun otro detalle ?
saludos,
hector.
__ el codigo expuesto con 'sangria' __
Private Sub CommandButton5ModificarDatos_Click()
If Len(TextBox3Titulo.Text) = 0 Then
MsgBox "Es obligatorio poner el título.", vbCritical, "Error al rellenar el formulario."
TextBox3Titulo.SetFocus
ElseIf Len(TextBox7FechaPrestado.Text) > 0 Then
If Not IsDate(TextBox7FechaPrestado) Then
MsgBox "El formato de la fecha no es correcto.", vbCritical, "Error al rellenar el formulario."
TextBox7FechaPrestado.SetFocus
ElseIf Len(TextBox8FechaDevuelto.Text) > 0 Then
If Not IsDate(TextBox8FechaDevuelto) Then
MsgBox "El formato de la fecha no es correcto.", vbCritical, "Error al rellenar el formulario."
TextBox8FechaDevuelto.SetFocus
Else
' AQUI TENGO CODIGO QUE RELLENA UNAS CELDAS
End If
End If
End If
End Sub
Respuesta Responder a este mensaje
#2 ~ jose ~
18/01/2007 - 23:47 | Informe spam
Hola Héctor

1) NO te avisa si el largo de los textboxes de fecha es cero -?-


Ya lo sabía, lo que pretendia era si hay caracteres en ese campo que
compruebe si es fecha y si no lo es que me mande el MsgBox.

2) si el largo del textbox de fecha 'devuelto' es cero... NO se aplica el codigo que rellena las celdas -?-


Esto por lo visto está mal, queria que si fuera 0 pasara de largo la
comprobación de si es fecha o no y SI me rellenara los códigos.

3) [solo como comentarios] cuando un codigo If...ElseIf...End If 'entra' a un apartado, se omiten los restantes -?-


Este punto no lo entiendo muy bien, es que es primera vez que empleo
los ElseIf

Haciendo más y más pruebas, se me ocurrió modificar estas dos
lineas:
... ElseIf Len(TextBox7FechaPrestado.Text) > 0 And
IsDate(TextBox7FechaPrestado) = False
... ElseIf Len(TextBox8FechaDevuelto.Text) > 0 And
IsDate(TextBox8FechaDevuelto) = False

'Solo hay un End If en vez de 3.

Ahora si que me funciona muy bien, que os (te) parece?
Venga! un saludo,
jose


comentas [si encuentras} algun otro detalle ?
saludos,
hector.
__ el codigo expuesto con 'sangria' __
Private Sub CommandButton5ModificarDatos_Click()
If Len(TextBox3Titulo.Text) = 0 Then
MsgBox "Es obligatorio poner el título.", vbCritical, "Error al rellenar el formulario."
TextBox3Titulo.SetFocus
ElseIf Len(TextBox7FechaPrestado.Text) > 0 Then
If Not IsDate(TextBox7FechaPrestado) Then
MsgBox "El formato de la fecha no es correcto.", vbCritical, "Error al rellenar el formulario."
TextBox7FechaPrestado.SetFocus
ElseIf Len(TextBox8FechaDevuelto.Text) > 0 Then
If Not IsDate(TextBox8FechaDevuelto) Then
MsgBox "El formato de la fecha no es correcto.", vbCritical, "Error al rellenar el formulario."
TextBox8FechaDevuelto.SetFocus
Else
' AQUI TENGO CODIGO QUE RELLENA UNAS CELDAS
End If
End If
End If
End Sub
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida