Funcion que modifica control en formulario |
Responder
|
| Autor | |
access_iceman
Nuevo
Unido: 19/Enero/2025 Localización: España Estado: Sin conexión Puntos: 7 |
Opciones de entrada
Gracias(0)
Cita Respuesta
Tema: Funcion que modifica control en formularioEnviado: 19/Enero/2025 a las 02:46 |
|
Buenas noches. Os describo el problema que tengo Tengo en un Modulo la siguiente función: Public Function actualizarcolores(nombreformulario As Form) Forms!nombreformulario![color].BackColor = vbWhite Forms!nombreformulario![color].ForeColor = vbBlack End Function Llamo desde el mismo formulario sobre el que actuaré a la funcion con: actualizarcolores [FORMULARIO 23] Pero esto no funciona. Evidentemente la sintaxis no está bien, tanto en la funcion como en la llamada, pero no sé lo bastante de Access para darme cuenta de mi error. Por favor, me podéis ayudar? Gracias
|
|
![]() |
|
xavi
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
Terrassa-BCN Unido: 10/Mayo/2005 Localización: Catalunya |||| Estado: Sin conexión Puntos: 14926 |
Opciones de entrada
Gracias(0)
Cita Respuesta
Enviado: 19/Enero/2025 a las 13:32 |
|
Hola access_iceman y bienvenido al foro,
Punto 1. Se entiende que el posible formulario a pintar contiene un control llamado "color". Punto 2. Se entiende que la función pública está en un módulo independiente. Punto 3. ¿Desde dónde llamas la función? Si es desde VBA y en el mismo formulario, bastaría con: actualizacolores Me Si es dese de otro formulario, recomiendo otra sintaxis: actualizacolores Forms("FORMULARIO 23") Consejo: los nombres de los controles y los objetos sin espacios ni caracteres extraños. Y a poder ser, descriptivos. Ejemplo (imaginando un formulario con datos de clientes): frmClientes. Un prefijo para indicar el tipo de objeto y un nombre descriptivo a continuación. A ver si así te funciona. Un saludo |
|
![]() |
|
access_iceman
Nuevo
Unido: 19/Enero/2025 Localización: España Estado: Sin conexión Puntos: 7 |
Opciones de entrada
Gracias(0)
Cita Respuesta
Enviado: 19/Enero/2025 a las 19:24 |
|
Hola Xavi
Lo primero muchas gracias por tu interés y ayuda. Respecto a los 2 primeros apartados de tu contestación, si, estás en lo cierto en los dos. Pero creo que expliqué mal mi problema. Llamo a la función desde el Formulario en el que quiero cambiar la apariencia del campo [color]. Dentro de la función, modifico la apariencia de [color] con esto: Forms![23-CONSULTA CATALOGO]![color].ForeColor = vbBlack Esto funciona sin problemas tal y como tu me indicas. El problema está en que cuando quiero utilizar esta misma función en otro formulario, por ejemplo [24-FORMULARIO] no sé como indicar en la instrucción que es otro formulario Cómo indico en la instrucción que cambia el campo color, que es otro formulario? Forms![23-CONSULTA CATALOGO]![color].ForeColor = vbBlack. Cómo substituyo el nombre del formulario por el del Formulario actual en esta línea? Seguramente para tí es obvio como hacerlo, pero mi nivel de access, no es muy bueno Reitero. Gràcies pel teu interès, minyó!
![]() Editado por access_iceman - 19/Enero/2025 a las 19:28 |
|
![]() |
|
xavi
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
Terrassa-BCN Unido: 10/Mayo/2005 Localización: Catalunya |||| Estado: Sin conexión Puntos: 14926 |
Opciones de entrada
Gracias(0)
Cita Respuesta
Enviado: 20/Enero/2025 a las 08:27 |
|
Si solo quieres sustituir el nombre 23-CONSULTA CATALOGO por el nombre del formulario dónde se ejecuta el código, se puede hacer así: Un saludo
|
|
![]() |
|
access_iceman
Nuevo
Unido: 19/Enero/2025 Localización: España Estado: Sin conexión Puntos: 7 |
Opciones de entrada
Gracias(0)
Cita Respuesta
Enviado: 20/Enero/2025 a las 18:42 |
|
Hola Xavi
He probado lo que dices pero da error "El uso de la palabra clave Me no es válido" Se te ocurre alguna otra manera? La sentencia que pongo es la siguiente: If Forms(Me.Name)![color].Value = "" Then Forms(Me.Name)![color].ForeColor = vbBlack Creo haber leído que la palabra clave Me no se admite en módulos? No sé si estoy en lo cierto Gracias por tu ayuda
|
|
![]() |
|
xavi
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
Terrassa-BCN Unido: 10/Mayo/2005 Localización: Catalunya |||| Estado: Sin conexión Puntos: 14926 |
Opciones de entrada
Gracias(0)
Cita Respuesta
Enviado: 20/Enero/2025 a las 19:20 |
|
A lo mejor no te entendí pero asumí que "Cómo substituyo el nombre del formulario por el del Formulario actual en esta línea?" significaba que lo lanzabas desde el propio formulario.
Me temo que me falta algo de información. Intenta volver a explicar despacito que tienes hecho, dónde lo tienes hecho y dónde quieres poner el código para que haga lo que deseas. Recuerda que nosotros no vemos la aplicación por lo que no des por supuestas cosas. Un saludo |
|
![]() |
|
access_iceman
Nuevo
Unido: 19/Enero/2025 Localización: España Estado: Sin conexión Puntos: 7 |
Opciones de entrada
Gracias(0)
Cita Respuesta
Enviado: 21/Enero/2025 a las 18:59 |
|
Hola de nuevo, Xavi. y gracias por contestar.
Finalmente he conseguido que funcione, orientándome por tu respuesta. Yo lo que quería era una función, que pudiera actuar en varios formularios, en la que se modificaran los colores del campo [color], presente en todos los formularios, cada vez que se modifique el valor de ese campo. Está función ha de estar situada en un Modulo, lógicamente Finalmente he hecho esto: Public Function actualizarcolores(ForName As Form) If ForName![color].Value = "hola" Then ForName![color].BackColor = vbWhite ForName![color].ForeColor = vbBlack End if End function Y a la función la llamo así: actualizarcolores Me. Y así funciona Muchas gracias por tu ayuda |
|
![]() |
|
Responder
|
|
|
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 |