Error en el código por cambiar el nombre de las hojas

23/08/2005 - 11:49 por Aitor Uranga | Informe spam
Hola, tengo un documento con una macro cuyo código pongo mas abajo, que
funcionaba bien cuando las hojas de documento se llamaban Hoja1, Hoja2,
etc... Pero ahora que he tenido que cambiar el nombre de las hojas a
"Benjamin" "Alevin" "Infantil" "Cadete" me da un error, alguien me puede
ayudar a cambiar el código?

Muchas gracias.

PD: Os explico la función del archivo excell para que lo podais entender
mejor. La hoja contiene una tabla de escolares que han realizado una serie
de actividades, cuando un escolar ha realizado mas de 6, en un campo se le
da el valor "F" (que es Finalista) entonces esta macro tiene que seleccionar
los registros que son finalistas, copiarlos y pegarlos en una nueva hoja,
luego tiene que hacer lo mismo con los de la siguente hoja y pegarlos en la
misma hoja que los anteriores pero debajo de los mismos y asi con todas las
hojas.


Sub prueba()
Dim wksNuevaHoja As Worksheet 'Variable para almacenar la hoja que
creará el código
Dim n As Byte 'Para iterar por las hojas

Application.ScreenUpdating = False 'Para mejorar el rendimiento del
código

For n = 1 To 3 'Se procesarán las hojas Hoja1, Hoja2 y Hoja3

With Worksheets("Hoja" & CStr(n)) 'A partir de esta línea, el . hará
referencia a la hoja
.[C3].AutoFilter 'Crea el autofiltro en la celda C3
.[C3].AutoFilter field:=1, Criteria1:="F" 'Establece la
condición para el autofiltro

.AutoFilter.Range.Offset(1).Resize(.AutoFilter.Range.Rows.Count -
1).SpecialCells(xlCellTypeVisible).Copy 'Copia las filas visibles

If IsError(['Datos filtrados'!IV65536]) Then 'Si no existe la
hoja "Datos filtrados" ...
Set wksNuevaHoja Worksheets.Add(after:=Sheets(Sheets.Count)) '... la crea y la coloca al
final de las existentes en el libro
wksNuevaHoja.Name = "Datos filtrados" 'Pone el nombre de la
hoja
End If

With wksNuevaHoja
.Paste Destination:=.Range("A" & .[A65536].End(xlUp).Row +
1) 'Pega los datos a partir de la 1ª fila libre (dejando la fila 1 para
posibles títulos)
End With

.[C3].AutoFilter 'Quita el autofiltro
End With 'Final del 1er. With

Next n

wksNuevaHoja.[A1].Select 'Selecciona una celda (para "deseleccionar" las
celdas recien copiadas)
Application.ScreenUpdating = True

Set wksNuevaHoja = Nothing 'Vacía el objeto (no es imprescindible, pero
tampoco estorba)
End Sub

Preguntas similare

Leer las respuestas

Search Busqueda sugerida