Ejecutar la misma macro en todo un libro Excel

A tod@s,
tengo un libro Excel con 145 hojas y una macro, en forma de código VBA, que calcula la transmitancia (que es un parámetro geoeléctrico).
Mi pregunta es si puede ejecutar esta única macro para todas las hojas del libro Excel a la vez (sin tener que estar ejecutándola hoja por hoja.

1 Respuesta

Respuesta
1
Creo que la macro tiene que estar en un modulo y que la ejecutes dentro de este lazo:
For hoja = 1 To Sheets.Count
      Sheets(hoja).Range("a1") = 15
 Next
'---------
En este ejemplo al ejecutar la macro, en todas las hojas en la celda A1 pongo el número 15
Si cambias esta linea por tu macro te puede funciona. Ten en cuenta que cuando le digas que haga algo le tienes que decir en que hoja estas trabajando Sheets(hoja).
Espero haberme explicado. Si necesitas más explicaciones pídemelas. Si quieres que nos intercambiemos fichero con ejemplos, posteame tu dirección y de envío la mía.
Buenos días y primero de todo gracias por tu respuesta e interés.
Yo he creado un nuevo módulo y he remplazado la segunda línea de tu macro por toda mi macro entera.
El problema es que continua calculando la transmitancia solo para la hoja que tengo activa y no para todas las hojas del libro como necesitaría.
¿Alguna idea de como puedo solucionarlo?
Muchas gracias por todo y saludos desde Barcelona.
En teoría te tenia que funcionar, cualquier código que metas entre esas dos líneas te las ejecutaría en todas las hojas, el problema es que tienes que cambiar el nombre de cada hoja en la que ejecutas, por ejemplo
Si quieres leer la celda A1 de la hoja primera u mjultiplicarlo por el valor de la celda B1 de la primera hoja y poner el resultado en la celda C1 de la primera hoja y esta misma operación la quieres ejecutar en todas las hojas, la secuencia sería más o menos:
For nombrehoja = 1 To Sheets.Count
      Sheets(nombrehoja).Range("c1") =_ Sheets(nombrehoja).Range("a1")*Sheets(nombrehoja).Range("b1")
 Next
'---------
otra posibilidad podría ser:
For nombrehoja = 1 To Sheets.Count
      Sheets(nombrehoja).select
       Range("c1") =Range("a1")*Range("b1")
 Next
'---------
Como puedes ver es parecido pero no lo mismo. De todas formas si quieres puedes enviarme la macro entera y el fichero le echo un vistazo. Otra posibilidad es que me envíes el fichero y lo veo in situ...

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas