|
Responder
|
Página 12> |
| Autor | |
a.alf
Ver perfil usuario
Enviar mensaje privado
Ver los mensajes del usuario
Visite la página de los usuarios
Añadir a la lista de amigos
Colaborador
Unido: 19/Octubre/2006 Localización: Castello España Estado: Sin conexión Puntos: 508 |
Tema: Campos llenosEnviado: 07/Junio/2024 a las 11:04 |
|
Buenos días. Tengo un formulario con 58 campos de texto. Me justaría mandar un mensaje cuando todos los campos estén completados, si hay alguno que no lo esta, no hacer nada. Tengo el siguiente codigo al evento "Al activar registro":
Después de mil pruebas no hay manera de que funcione como yo quiero. Lo miro y remiro pero no veo donde estoy fallando No se lo que estoy haciendo mal. Podríais ayudarme?
|
|
|
Un saludo.
Si alguien te regala su tiempo, agradecelo eternamente, ya que te está dando algo que nunca recuperará. |
|
![]() |
|
Mihura
Ver perfil usuario
Enviar mensaje privado
Ver los mensajes del usuario
Visite la página de los usuarios
Añadir a la lista de amigos
Administrador
Unido: 06/Mayo/2005 Localización: En la dehesa Estado: Sin conexión Puntos: 14428 |
Enviado: 07/Junio/2024 a las 11:27 |
|
... ¿y el fallo es?
Por cierto, en ese IF siempre se cumple condición ... If ctrl.Name <> "txtYear" Or ctrl.Name <> "Fecha" Or ctrl.Name <> "fechactu" Or ctrl.Name <> "idb" Or ctrl.Name <> "tr" Or ctrl.Name <> "ID" Then Si el control se llama "Fecha" cumple que es distinto de txtYear con lo que el If se va por el valor verdadero. Podrías plantearlo: If Ctlr.name = "xxx" or ctlr.name = "yyy" .... then Else .... aquí tus instrucciones End if |
|
![]() |
|
a.alf
Ver perfil usuario
Enviar mensaje privado
Ver los mensajes del usuario
Visite la página de los usuarios
Añadir a la lista de amigos
Colaborador
Unido: 19/Octubre/2006 Localización: Castello España Estado: Sin conexión Puntos: 508 |
Enviado: 07/Junio/2024 a las 11:40 |
|
El fallo es que de la manera que esta ahora el código no me muestra nunca el mensaje.
He probado de mil maneras y o no lo muestra o lo muestra siempre, estén los campos llenos o alguno vacío. Esa linea que dices la he quitado porque no me importa que lea esos campos también. Pero sigue sin funcionar. El código esta así:
|
|
|
Un saludo.
Si alguien te regala su tiempo, agradecelo eternamente, ya que te está dando algo que nunca recuperará. |
|
![]() |
|
Mihura
Ver perfil usuario
Enviar mensaje privado
Ver los mensajes del usuario
Visite la página de los usuarios
Añadir a la lista de amigos
Administrador
Unido: 06/Mayo/2005 Localización: En la dehesa Estado: Sin conexión Puntos: 14428 |
Enviado: 07/Junio/2024 a las 11:46 |
|
... que raro veo yo esto:
If Not ctrl = vbNullString Then prueba así: If Nz(ctrl, "") = "" then
|
|
![]() |
|
a.alf
Ver perfil usuario
Enviar mensaje privado
Ver los mensajes del usuario
Visite la página de los usuarios
Añadir a la lista de amigos
Colaborador
Unido: 19/Octubre/2006 Localización: Castello España Estado: Sin conexión Puntos: 508 |
Enviado: 07/Junio/2024 a las 11:55 |
|
He cambiado a tu opción pero hace lo mismo.
Lo curioso es que el bucle para siempre en el segundo campo, y en alguna de las pruebas que he hecho si que me marcaba todos los campos.
|
|
|
Un saludo.
Si alguien te regala su tiempo, agradecelo eternamente, ya que te está dando algo que nunca recuperará. |
|
![]() |
|
Mihura
Ver perfil usuario
Enviar mensaje privado
Ver los mensajes del usuario
Visite la página de los usuarios
Añadir a la lista de amigos
Administrador
Unido: 06/Mayo/2005 Localización: En la dehesa Estado: Sin conexión Puntos: 14428 |
Enviado: 07/Junio/2024 a las 12:48 |
|
¿que es para?
Estoy más adivinando que sabiendo lo que te ocurre ...
|
|
![]() |
|
a.alf
Ver perfil usuario
Enviar mensaje privado
Ver los mensajes del usuario
Visite la página de los usuarios
Añadir a la lista de amigos
Colaborador
Unido: 19/Octubre/2006 Localización: Castello España Estado: Sin conexión Puntos: 508 |
Enviado: 07/Junio/2024 a las 13:01 |
|
Tengo el formulario con los 58 campos, si tengo el código como lo envié, al cambiar de registro me colorea los dos primeros campos del registro. Si cambio el código quitando le "goto fin" me colorea todos los campos, en verde los vacíos y en amarillo los llenos.
La solución creo que pasa por al detectar el primer campo vacío salir del bucle. Pero no se como hacerlo sin que me afecte a la opción de campo lleno.
|
|
|
Un saludo.
Si alguien te regala su tiempo, agradecelo eternamente, ya que te está dando algo que nunca recuperará. |
|
![]() |
|
Mihura
Ver perfil usuario
Enviar mensaje privado
Ver los mensajes del usuario
Visite la página de los usuarios
Añadir a la lista de amigos
Administrador
Unido: 06/Mayo/2005 Localización: En la dehesa Estado: Sin conexión Puntos: 14428 |
Enviado: 07/Junio/2024 a las 13:07 |
|
Para salirte de un bucle:
Exit For
|
|
![]() |
|
a.alf
Ver perfil usuario
Enviar mensaje privado
Ver los mensajes del usuario
Visite la página de los usuarios
Añadir a la lista de amigos
Colaborador
Unido: 19/Octubre/2006 Localización: Castello España Estado: Sin conexión Puntos: 508 |
Enviado: 07/Junio/2024 a las 13:19 |
|
Hola. He puesto el código así:
Hace lo mismo que con el "Goto". Un registro con todos los campos llenos solo colorea los dos primeros campos y con uno que tiene solo dos o tres campos llenos también colorea los dos primeros solamente. |
|
|
Un saludo.
Si alguien te regala su tiempo, agradecelo eternamente, ya que te está dando algo que nunca recuperará. |
|
![]() |
|
a.alf
Ver perfil usuario
Enviar mensaje privado
Ver los mensajes del usuario
Visite la página de los usuarios
Añadir a la lista de amigos
Colaborador
Unido: 19/Octubre/2006 Localización: Castello España Estado: Sin conexión Puntos: 508 |
Enviado: 07/Junio/2024 a las 13:47 |
|
La imagen siguiente es con la salida del bucle al encontrar el primer campo vacío en un registro con cuatro campos llenos. ![]() Esta es con un registro totalmente lleno y salida del bucle igual que la anterior. ![]() Las dos siguientes son sin el "Exit for" ![]() ![]() Es muy raro lo que ocurre.
|
|
|
Un saludo.
Si alguien te regala su tiempo, agradecelo eternamente, ya que te está dando algo que nunca recuperará. |
|
![]() |
|
AnSanVal
Ver perfil usuario
Enviar mensaje privado
Ver los mensajes del usuario
Visite la página de los usuarios
Añadir a la lista de amigos
Administrador
Unido: 16/Marzo/2005 Localización: España Estado: Sin conexión Puntos: 5990 |
Enviado: 07/Junio/2024 a las 14:51 |
|
En lugar de controlar visualmente por colores, prefiero que controle VBA: Private Sub CommandButton1_Click() Dim L_txt# L_txt = vacios If L_txt = 0 Then ' aquí las acciones a realizar. End If End Sub Private Function vacios() Dim miObjeto As Object For Each miObjeto In UserForm1.Controls If Left(miObjeto.Name, 7) = "TextBox" Then vacios = vacios - (miObjeto.Text = "") End If Next miObjeto End Function |
|
|
Saludos desde Tenerife.
|
|
![]() |
|
a.alf
Ver perfil usuario
Enviar mensaje privado
Ver los mensajes del usuario
Visite la página de los usuarios
Añadir a la lista de amigos
Colaborador
Unido: 19/Octubre/2006 Localización: Castello España Estado: Sin conexión Puntos: 508 |
Enviado: 07/Junio/2024 a las 15:43 |
|
Hola AnSanVal, gracias a ti también por intentar ayudarme.
he adaptado tu código así:
Así sale el mensaje siempre, este el registro con todos los campos llenos o vacíos.
|
|
|
Un saludo.
Si alguien te regala su tiempo, agradecelo eternamente, ya que te está dando algo que nunca recuperará. |
|
![]() |
|
AnSanVal
Ver perfil usuario
Enviar mensaje privado
Ver los mensajes del usuario
Visite la página de los usuarios
Añadir a la lista de amigos
Administrador
Unido: 16/Marzo/2005 Localización: España Estado: Sin conexión Puntos: 5990 |
Enviado: 07/Junio/2024 a las 20:43 |
|
Sospecho que tus Cuadros de texto NO se llaman: TextBox1, TextBox2, TextBox3, etc.
Si estoy en lo cierto, nunca se cumplirá If Left(miObjeto.Name, 7) = "TextBox" Then... y al no encontrar coincidencias «vacios» siempre regresará valiendo cero y por tanto If L_txt = 0 Then siempre será VERDADERO y siempre mostrará el mismo mensaje. Editado por AnSanVal - 07/Junio/2024 a las 20:48 |
|
|
Saludos desde Tenerife.
|
|
![]() |
|
a.alf
Ver perfil usuario
Enviar mensaje privado
Ver los mensajes del usuario
Visite la página de los usuarios
Añadir a la lista de amigos
Colaborador
Unido: 19/Octubre/2006 Localización: Castello España Estado: Sin conexión Puntos: 508 |
Enviado: 07/Junio/2024 a las 22:40 |
|
AnsaVal estas en lo cierto. Mis campos se llaman: l800, l815, l830, l845, l900 ...
|
|
|
Un saludo.
Si alguien te regala su tiempo, agradecelo eternamente, ya que te está dando algo que nunca recuperará. |
|
![]() |
|
AnSanVal
Ver perfil usuario
Enviar mensaje privado
Ver los mensajes del usuario
Visite la página de los usuarios
Añadir a la lista de amigos
Administrador
Unido: 16/Marzo/2005 Localización: España Estado: Sin conexión Puntos: 5990 |
Enviado: 08/Junio/2024 a las 17:43 |
|
Campos y Cuadros de texto son conceptos diferentes.
Si los nombres de tus Cuadros de texto son los que estás llamando campos,... el código que te ofrecí no te funcionará. |
|
|
Saludos desde Tenerife.
|
|
![]() |
|
Responder
|
Página 12> |
|
Tweet
|
| Ir al foro | Permisos de foro ![]() Usted No puede publicar nuevos temas en este foro Usted No puede responder a temas en este foro Usted No puede borrar sus mensajes en este foro Usted No puede editar sus mensajes en este foro Usted No puede crear encuestas en este foro Usted No puede votar en encuestas en este foro |