Asignar una macro a una hoja

5 envíos / 0 nuevos
Último envío
ChristianSav
Imagen de ChristianSav
Offline
última acción: Hace 7 meses 1 semana
alta: 09/04/2017 - 05:08
Puntos: 45
Asignar una macro a una hoja

Buenas noches. No soy un experto ni mucho menos, pero he aprendido bastante siguiendo foros y con el método de "prueba y error". Pero ahora me he topado con una dificultad que no puedo superar y me estaria muy agradecido si alguien me pudiera orientar al respecto.

Tengo un archivo excel en el cual, mediante un botón, se genera una hoja nueva, con determinado formato de colores, tamaño de columnas, etc. Lo que quisiera es que cuando esa hoja se activara, y al hacer doble click en determinadas celdas, corrieran unas macros que ya estan escritas en un módulo. Precisamente, lo que quiero es que las macros queden asociadas a la hoja nueva al ser creada, y no tener que escribir el código cada vez que cree la hoja nueva. Es decir que se asociaran "automáticamente" al crear la hoja, ciertas macros a los eventos Activate y BeforeDoubleClick.

Muchas gracias

Cron
Imagen de Cron
Offline
última acción: Hace 9 horas 42 mins
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntosNivel 5 - 4000 puntos
alta: 23/06/2010 - 12:30
Puntos: 8840
HolaPara eso están los

Hola

Para eso están los módulos. Lo que deberías hacer es generar una macro en un módulo que haga referencia a la hoja que quieras en cada momento. Esto se hace localizando el nombre de la hoja (o el número) mediante programación.

Por ejemplo, para introducir un valor en la última hoja podrías hacer algo así como:

Sheets(sheets.count).range("A1").value = 3

 

Un saludo

ChristianSav
Imagen de ChristianSav
Offline
última acción: Hace 7 meses 1 semana
alta: 09/04/2017 - 05:08
Puntos: 45
Gracias por tu tiempo,  Cron.

Gracias por tu tiempo,  Cron. Pero creo que no fui del todo claro. Lo que quiero es que, al crear la hoja, le pueda asignar con código una macro  (que ya está en un módulo) que habilite una acción nueva en un evento futuro que va a realizarse en esa hoja. Es decir que en la hoja nueva, se pueda hacer doble click en una celda y se produzca un resultado

Cron
Imagen de Cron
Offline
última acción: Hace 9 horas 42 mins
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntosNivel 5 - 4000 puntos
alta: 23/06/2010 - 12:30
Puntos: 8840
Ok, si quieres hacer algo al

Ok, si quieres hacer algo al recibir un doble click en cualquier hoja (actual o futura), puedes llamar al evento Workbook_SheetBeforeDoubleClick de ThisWorkBook.

He probado a poner el código siguiente dentro de ThisWorkBook y funciona correctamente:

Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
ThisWorkbook.ActiveSheet.Range("A1").Value = "XXX"
End Sub

En cuanto a lo de inyectar código mediante VBA, no sé si es posible. Dejo la respuesta abierta por si alguien tiene más información.

 

Un saludo

 

P.D. Inyectar código dentro del propio archivo sería una manera estupenda de propagar virus... ahí lo dejo... Inocente

 

P.D. 2 - 

ChristianSav
Imagen de ChristianSav
Offline
última acción: Hace 7 meses 1 semana
alta: 09/04/2017 - 05:08
Puntos: 45
Gracias!!! Funciona perfecto!

Gracias!!! Funciona perfecto!!!