Excel - macro para varias hojas de un libro

 
Vista:
sin imagen de perfil

macro para varias hojas de un libro

Publicado por rocio (2 intervenciones) el 23/10/2014 23:04:12
Hola a todos,
estoy intentando ejecutar una macro para borrar rangos en distintas hojas de un libro. La macro que he creado es la siguiente:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Sub prueba2()
'
' prueba2 Macro
'
Dim celda As Range, ultfila As Long
ultfila = Range("a" & Rows.Count).End(xlUp).Row
 
Sheets("hh").Select
Range("a2:b" & ultfila).Select
Selection.ClearContents
Sheets("pi").Select
Range("a2:c" & ultfila).Select
Selection.ClearContents
Sheets("la").Select
Range("a2:d" & ultfila).Select
Selection.ClearContents
 
For Each celda In Range("a2:b" & ultfila)
If (celda.Value = "") Then celda.ClearContents
Next celda
End Sub

La macro funciona pero me borra el mismo rango en todas la hojas, tomando como referencia el rango de valores de la hoja que he nombrado como"la" y si las otras hojas contienen más datos que esta no los elimina. Si alguien me pudiera ayudar a corregirla sería una gran ayuda. Muchas gracias de antemano.
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

macro para varias hojas de un libro

Publicado por Juanjo (494 intervenciones) el 24/10/2014 08:17:37
Muy buenas.

Bueno, si te he entendido, lo que tienes que hacer es calcular la variable ultfila para cada una de las hojas. Entonces quedaría así:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Sub prueba2()
 '
 ' prueba2 Macro
 '
 Dim celda As Range, ultfila As Long
 Sheets("hh").Select
 ultfila = Range("a" & Rows.Count).End(xlUp).Row
 Range("a2:b" & ultfila).Select
 Selection.ClearContents
 Sheets("pi").Select
 ultfila = Range("a" & Rows.Count).End(xlUp).Row
 Range("a2:c" & ultfila).Select
 Selection.ClearContents
 Sheets("la").Select
 ultfila = Range("a" & Rows.Count).End(xlUp).Row
 Range("a2:d" & ultfila).Select
 Selection.ClearContents
 
 For Each celda In Range("a2:b" & ultfila)
 If (celda.Value = "") Then celda.ClearContents
 Next celda
 End Sub

Las tres últimas filas creo que no te sirven para nada, salvo para ralentizar el funcionamiento de la macro.

Un saludo.
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

macro para varias hojas de un libro

Publicado por Rocio (2 intervenciones) el 24/10/2014 16:26:15
Muchas gracias por tu respuesta y por la rapidez en solucioname la duda. Lo necesito para el trabajo, le di muchas vueltas y no habia caido en definir la ultima fila a cada una de las hojas. Ahora voy a intentar construir otra macro para pegar datos que provienen de otros archivos excel. Muchisimas gracias por tu ayuda.
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