Visual Basic para Aplicaciones - EVENTO PARA LABELS EN UN FORM

Life is soft - evento anual de software empresarial
 
Vista:

EVENTO PARA LABELS EN UN FORM

Publicado por Jose (14 intervenciones) el 08/11/2019 14:01:15
Hola,

En un formulario he insertado unos diferentes labels (unos 40). Lo que deseo hacer es ejecutar una macro cuando se haga clic sobre alguna de esas 40 labels.

Podría crear un evento para cada una de esas label, pero esto me supondría generar mucho código.

¿Se puede generar un mismo evento que se ejecute cuando se haga clic sobre cualquier label que tengo en formulario?

Gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 38
Ha mantenido su posición en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

EVENTO PARA LABELS EN UN FORM

Publicado por dario (21 intervenciones) el 08/11/2019 14:47:49
Hola, no queda muy claro que es lo que queres hacer, si queres poner un texto en todos los labels es sencillo, si en cada label queres poner un texto diferente es otro tema.
Aclará primero que queres hacer y de ahí se vé cómo.

Una opción es crear un label, que se llame por ejemplo "label1", pones copiar y pegar y te va a pregunar si querés crear una matriz de controles y le decis que sí, de esa manera te va a crear todos los labels como label1 y en la propiedad "index" te va a figurar del 0 al 39, de esa forma, en el evento "click" del label pones un buble similar a esto:

1
2
3
for j = 0 to 39
      Label1 (j) = "Hola como estas"
netx for

eso va a hacer que te lleno los 40 labels con la misma leyenda.
Si lo que queres es poner algo diferente en cada una tendras uqe hacer algo así.

1
2
3
4
5
6
7
8
9
10
11
for j = 0 to 39
      Select case j
              case 0
                       Label1 (j) = "Hola como estas"
              case 1
                       Label1 (j) = "Aca otra cosa"
              case 2
                       Label1 (j) = "aca algo diferente a lo anterior"
así con los 40 index del label.
      End Select
netx for
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Alfredo
Val: 121
Bronce
Ha mantenido su posición en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

EVENTO PARA LABELS EN UN FORM

Publicado por Alfredo (40 intervenciones) el 08/11/2019 16:24:10
Hola Jose
Puedes crear un procedimiento con lo que deseas que haga el Label y llamarlo desde el evento click, P.ej:

1
2
3
4
5
6
7
8
9
10
11
12
Private Sub Label1_Click()
   '
   Call Mi_Procedimiento   'Llamas a tu procedimiento genérico
   '
End Sub
 
Private Sub Mi_Procedimiento()
   'Este seria tu procedimiento generico
   '
   'Aqui el codigo que deseas haga el label
   '
End Sub

Pero tendrías que editar el procedimiento click de cada label como el ejemplo

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

EVENTO PARA LABELS EN UN FORM

Publicado por Jose (14 intervenciones) el 08/11/2019 19:15:46
Muchas gracias por vuestras contestaciones. Con ambas se consigue lo que pretendo pero me obliga a desarrollar un sin fin de eventos (uno por label) o un case por cada label.

Podría ser una opción crear un evento mediante un módulo clase que agruparse a todos los label que tengo en el formulario? No tengo ninguna experiencia al respecto y no sé si sería posible...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Alfredo
Val: 121
Bronce
Ha mantenido su posición en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

EVENTO PARA LABELS EN UN FORM

Publicado por Alfredo (40 intervenciones) el 08/11/2019 20:49:57
Hola de nuevo José

Efectivamente, mediante un modulo de clase se pueden crear todos los controles que deses y controlar sus eventos mediante un arreglo, te adjunto un ejemplo de esto, estudialo y aplicalo a tus necesidades.

Espero sea lo que necesitas.

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

EVENTO PARA LABELS EN UN FORM

Publicado por Jose (14 intervenciones) el 09/11/2019 11:43:56
Muchisimas gracias!! El módulo clase es la solución perfecta a lo que buscaba...con unas pocas lineas de código he conseguido que todas las labels reaccionen conforme esperaba. Mil gracias Alfredo por tu archivo me ha sido de gran ayuda y además tampoco sabía que se pueden general controles, así que 2 en 1!! Sensacional!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de MIGUEL
Val: 424
Bronce
Ha mantenido su posición en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

EVENTO PARA LABELS EN UN FORM

Publicado por MIGUEL (121 intervenciones) el 09/11/2019 01:49:33
Buenas Jose

Otra forma de modificar el caption de los label seria con un array, te dejo un ejemplo, aunque tendrías que editar el procedimiento click de cada label, suena a mucho trabajo pero no es así, es solo copiar y pegar en cada evento, te tomara a lo mucho 10 min editar los 40 labels.

Básicamente es lo que te propuso Alfredo en su primer comentario, solo que no es como piensas, no se requiere hacer un case o if por cada texto que quieras poner a x label.

Incluso lo podrías combinar con el ejemplo que te compartió Alfredo

Espero te sirva

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

EVENTO PARA LABELS EN UN FORM

Publicado por Jose (14 intervenciones) el 09/11/2019 11:48:40
Muchas gracias Miguel, tu solución también es muy buena y funciona perfectamente. El problema es que realmente tengo 457 labels en el formulario, asi que el modulo clase me evita crear 457 eventos.De cualquier modo, me parece una solución genial!! Mil Gracias!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar