Cambiar Tema de color con una listbox

Dudas sobre código
Avatar de Usuario
leadrudi
Nivel 2
Mensajes: 40
Registrado: Sab Oct 14, 2017 7:55 am

Re: Cambiar Tema de color con una listbox

Mensajepor leadrudi » Mar Jun 12, 2018 1:45 am

Eso ya lo había probado (entre muchísimas cosas) y siempre me devolvió:

Código: Seleccionar todo

No se encontró el método o el dato miembro.

señalando el nombre del formulario. Supongo que algo tengo mal en la forma en que trabajan las relaciones de formularios y no logro ver. Y no lo sé. Lo he puesto en el subformulario, en el formulario padre, lo he puesto con y sin el Me. Esto me ha agotado. He probado tanto que quizá algo que no probé no logro verlo.
:oops: :mrgreen: :|

Avatar de Usuario
Neckkito
Moderador
Mensajes: 758
Registrado: Dom Oct 25, 2015 3:42 pm

Re: Cambiar Tema de color con una listbox

Mensajepor Neckkito » Mar Jun 12, 2018 9:15 am

Sin más información poco puedo decirte. De cualquier manera, el intellisense al programar el formulario debería ir mostrándote los elementos para escribirlo sin errores. Si fuerzas la escritura del nombre del formulario tras el "me" (y no te aparece con el intellisense) es que ese subformulario no se llama así, y por eso no encuentra el control subformulario. Revisa todos los nombres a partir del su propiedad Nombre, para ver cómo se llama.

También, bote pronto, se me ocurre que si utilizas nombres con espacios en blanco o bien utilizas la propuesta del intellisense, que es sustituir los espacios en blanco por subguiones, o lo escribes tal cual, pero encerrado entre corchetes ([Esto es un ejemplo]).

Echa un ojo a este ejemplo, por si te puede servir: http://www.mediafire.com/file/4q2kgqgbd8d75r6/Leadrudi.zip

Saludos.
Access MVP 2017-2019
http://bit.ly/NckAccess

Avatar de Usuario
leadrudi
Nivel 2
Mensajes: 40
Registrado: Sab Oct 14, 2017 7:55 am

Re: Cambiar Tema de color con una listbox

Mensajepor leadrudi » Mar Jun 12, 2018 11:45 pm

Me ha sacado de quisio.
"No se ha definifo la variable", "No coinciden los tipos", "El uso de la propiedad no válido".

Ahora pregunto, para ver si estoy tan equivocado o qué diablos:
Si a "Call Cambia_Colores_Def(Me)" lo pongo en el formulario a modificar en el Form_Load y luego, con un botón llamo a "Me.subForm.SourceObject = "frmPdC_A" para que se cargue el formulario en el campo de formulario, ¿no debería colorearse de todos modos?
► Si es SÍ, ¿¡Por qué diablos no lo hace!?
► Si es NO: ¿Por qué me da error cuando lo asigno al p... botón? O no da error pero no se colorea.

Otra cosa:
No sé si será un error de instalación quizá: como dato el RGB(X,Y,Z) me da error en Excel al intentar colorear una celda, cuando en hace un tiempo me funcionaba perfectamente. Quizá haya algo que no está instalado, alguna referencia que falta, algo. No lo sé.

Y algo que veo que no puse en la respuesta anterior:
Eso de "me.name" y demás, fue con fin irónico (como decir: "en la desesperación hasta probé esto"). Perdón si se entendió otra cosa.
:oops: :mrgreen: :|

Avatar de Usuario
Neckkito
Moderador
Mensajes: 758
Registrado: Dom Oct 25, 2015 3:42 pm

Re: Cambiar Tema de color con una listbox

Mensajepor Neckkito » Mié Jun 13, 2018 9:15 am

Hola

Como recomendación para futuras ocasiones te recomendaría que explicaras cómo tienes montado tu sistema en Access con el mayor detalle posible desde el principio del hilo... así nos evitamos pérdidas de tiempo tanto para quien pregunta como para quien responde.

La programación en Access es una programación orientada a eventos. Eso implica que el código se ejecuta cuando se desata el evento. Lo que no hace es "guardar" el código generado para cuando tú creas que deba ejecutarse. Por otra parte tampoco dejas claro si el CONTROL subformulario se carga con un formulario directamente o no tiene origen hasta que se lo asignas.

Así que te he hecho un segundo ejemplo contemplando ambas posibilidades: http://www.mediafire.com/file/2v4a97dvrdqyicf/Leadrudi2.zip

Y como ya he insinuado que no especificas exactamente cómo lo tienes estructurado un par de comentarios:

- Los ejemplos que te he preparado (el 1 y el 2) son ejemplos que sí funcionan. Si los descargas, los pruebas, y no indicas si te han funcionado o no, pues mal vamos... Porque si te funcionan bien el problema es de tu estructura; si no te funcionan bien probablemente el problema sea de tu Access. Así que sería un detalle añadir una triste línea diciendo algo así como "lo he probado y funciona".
- Una cosa es el CONTROL subformulario y otra cosa es el OBJETO subformulario que está dentro de ese control. Son dos elementos diferentes y, por tanto, deben tratarse de manera diferente.
- Si pones, como indicas, en el evento "Al cargar", el código <Call Cambia_Colores_Def(Me)>, al llegar al CONTROL subformulario detecta precisamente eso, que es un CONTROL subformulario, y, por tanto no realiza ninguna acción sobre el mismo. Eso es por lo comentado anteriormente: una cosa es el CONTROL y otra el OBJETO.
- Y relacionado con lo anterior, y de nuevo insistiendo sin saber cómo lo haces, si estamos discutiendo que la llamada al OBJETO es me.subFrm.Form, no sé cómo sigues pensando que <Call Cambia_Colores_Def(Me)> te va a modificar los colores del subformulario. ¿Dónde ves ahí la llamada al OBJETO subformulario?
- Cuando asignas el origen al CONTROL subformulario (sourceobject) el evento "Al cargar" del formulario ya ha pasado y, obviamente, no está activo. Así que, lamentándolo mucho y como te indicaba al principio, ese código no se "guarda" para ejecutarse cuando a ti te parezca conveniente.
- Lo primero que tienes que hacer es tener bien claro cómo llamas a tus controles. De nuevo, ten en cuenta que una cosa es el CONTROL (y su nombre) y otra el OBJETO (y su nombre).

Por el tema de que no te funcione el Excel, poco puedo decirte. Si crees que las aplicaciones de la suite de Office no te funcionan bien haz una reinstalación y listos.

Saludos.
Access MVP 2017-2019
http://bit.ly/NckAccess

Avatar de Usuario
leadrudi
Nivel 2
Mensajes: 40
Registrado: Sab Oct 14, 2017 7:55 am

Re: Cambiar Tema de color con una listbox

Mensajepor leadrudi » Jue Jun 14, 2018 3:26 am

¡HAS VISTO QUE LO ESTABA HACIENDO MAL!
El caso 1 es exactamente como funciona, pero a la llamada con me.xxx.form lo hacía aún así desde el subformulario. Y cuando probé desde el "llamado" al subform para cargarlo no le pasaba bien el parámetro.
Eso sí soy consciente que no lo probé.
Juro por mi vida que ya me estaba poniendo malo con este stress de no lograr dar pie con bola. Tendría que ser más ordenado en la forma en que pruebo o como armo las cosas. Me doy cuenta que soy bastante desorganizado. Inserto objetos, nombro uno por uno, pero al siguiente formulario inserto un objeto, lo nombro, genero el código, luego inserto otro, genero código y luego lo nombro.
Como dice un texto de "El Martín Fierro", "Al que nace barrigón es al ñudo que lo fajen"... Hasta que no me organice en las formas de hacer las cosas creo que tendré este mismo problema. Así que prometo intentar ser más organizado.

El código funcional quedó así:

Código: Seleccionar todo

    Select Case Me.MO_SELECT.Value
    Case 1
        Me.subForm.SourceObject = "frmPdC_A"
        --> Call modColoresApply.Cambia_Colores_Def(Me.subForm.Form)
    Case 2
        Me.subForm.SourceObject = "frmPdC_C"
    Case 3
        Me.subForm.SourceObject = "frmPdC_E"
    Case 4
        Me.subForm.SourceObject = "frmPdC_N"
    Case 5
        Me.subForm.SourceObject = "frmPdC_U"
    Case Else
        MsgBox "¡Error! Origen no establecido.", 16, vBase & "Panel de Control"
    End Select

Ese Me.subForm.form es el que no había probado. Todas las combinaciones que te imagines, sí. (el --> no es parte del código).
Ahora tocará replicar en los otros Case y santo remedio.
¡MUCHAS GRACIAS!
:oops: :mrgreen: :|


Volver a “Código VBA”

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 0 invitados