Como ejecutar una macro en todas las hojas de un libro

Estoy trabajando en excel 2010 con una macro que saca promedios de grupos de 3 filas por columna sin repetir filas. La macro funciona bien pero quiero repetir ese proceso para todas las hojas de Excel (son 70 hojas), sin tener que hacerlo hoja por hoja, todas tienen exactamente el mismo formato por lo que en teoría la macro debe funcionar en cada una de ellas.

La macro en la que trabajo va asi:

Sub Macro2()
'
' Macro2 Macro
'
For i = 5 To 238 Step 3
For j = 2 To 51
Cells(i + 235, j).Activate
ActiveCell.Value = "=SUM(R[-235]C:R[-233]C)/3"
Next j
Next i
For fila = 240 To 317
For col = 2 To 51
If Cells(fila, col).Value = "" Then
Rows(fila).Delete
End If
Next col
Next fila
Range("A240").Value = "1"
Range("A241").Value = "2"
Range("A240:A241").Select
Selection.AutoFill Destination:=Range("A240:A317"), Type:=xlFillDefault
End Sub

1 respuesta

Respuesta
1

Podrías seleccionar todas las hojas (manteniendo Ctrl presionada) y ejecutar la macro... o podrías incluir esa tarea al inicio de tu rutina.

En la matriz se guardarán las hojas, luego se seleccionan todas y se ejecuta 1 sola vez la macro.

Sub procesoUnico()
'x Elsamatilde
'se define una matriz para guardar el nombre de todas las hojas
Dim A(1 To 7) As String
For I = 1 To Sheets.Count
A(I) = Sheets(I).Name
Next
' selecciona todas las hojas del libro
Sheets(A()).Select
'ejecuta el proceso 1 sola vez
Application.ScreenUpdating = False
For I = 5 To 238 Step 3
For j = 2 To 51
Cells(I + 235, j).Activate
ActiveCell.Value = "=SUM(R[-235]C:R[-233]C)/3"
Next j
Next I
For fila = 240 To 317
For col = 2 To 51
If Cells(fila, col).Value = "" Then
Rows(fila).Delete
End If
Next col
Next fila
Range("A240").Value = "1"
Range("A241").Value = "2"
Range("A240:A241").Select
Selection.AutoFill Destination:=Range("A240:A317"), Type:=xlFillDefault
MsgBox "Fin del proceso"
End Sub

Le coloqué una línea que impide el movimiento de hojas para acelerar un poco el proceso, pero de todos modos tendrá su demora por la cantidad de hojas.

En la línea inicial debes colocar el total de tus hojas, en mi ejemplo solo llegué hasta 7 no 70.

Dim A(1 To 70) As String

Sdos. Recuerda valorar.... hay 2 opciones: Buena o Excelente. 

Elsa

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas