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

#1 Juan
23/08/2005 - 14:39 | Informe spam
Hola Aitor

Despues de mirar por encima el codigo lo que se me ocurre es cambiar la
forma de llamar las hojas y dejarte un pequeño problema que me parece que
aparecera

Al cambiar el nombre de las hojas tienes que cambiar la forma de llamarlas
puedes hacerlo asi

With Worksheets("Hoja" & CStr(n)) 'A partir de esta línea, el . hará
referencia a la hoja




Por
With Sheets(n) ' no se si al definir n como byte te dara error?? yo
utilizo integer para los contadores

el problema creo que te surgira cuando intentes crear varias hojas con el
mismo nombre

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





Como opcion podrias crearla al principio e ir cambiando la colunma/fila de
pegado

Si cualquier cosa comentas

Un saludo
Juan
Respuesta Responder a este mensaje
#2 Aitor Uranga
23/08/2005 - 16:33 | Informe spam
Ok, probare haber que tal me va y te comento.

Gracias.

"Juan" escribió en el mensaje
news:uF1QB$


Hola Aitor

Despues de mirar por encima el codigo lo que se me ocurre es cambiar la
forma de llamar las hojas y dejarte un pequeño problema que me parece que
aparecera

Al cambiar el nombre de las hojas tienes que cambiar la forma de llamarlas
puedes hacerlo asi

>> With Worksheets("Hoja" & CStr(n)) 'A partir de esta línea, el . hará
>> referencia a la hoja
Por
With Sheets(n) ' no se si al definir n como byte te dara error?? yo
utilizo integer para los contadores

el problema creo que te surgira cuando intentes crear varias hojas con el
mismo nombre

>> 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

Como opcion podrias crearla al principio e ir cambiando la colunma/fila de
pegado

Si cualquier cosa comentas

Un saludo
Juan




Respuesta Responder a este mensaje
#3 Aitor Uranga
23/08/2005 - 17:04 | Informe spam
OK!!!!!!!!!!!! Gracias Juan, eso ya esta arreglado, es que yo no tengo idea
de visual basic y esto me lo ayudo ha hacer Fernando Arroyo, todavía tengo
algun problema, haber si puedes ayudarme.

En el código hay algo que copia los datos del registro o hace la selección
hasta que encuentra una celda en blanco o un salto de página no? es que la
tabla es tan grande que el que lo diseño, metio unos saltos de página
dejando alguna columna y fila libre, entonces en cuanto llega ahi, supongo
que el autofiltro se corta, hay alguna manera de definir en el código el
rango al que debe aplicar el autofiltro (ya que este es siempre el mismo)

PD: Si no me entiendes y quieres que te envie el archivo de excell no tengo
ningún incoveniente.

Gracias.


"Juan" escribió en el mensaje
news:uF1QB$


Hola Aitor

Despues de mirar por encima el codigo lo que se me ocurre es cambiar la
forma de llamar las hojas y dejarte un pequeño problema que me parece que
aparecera

Al cambiar el nombre de las hojas tienes que cambiar la forma de llamarlas
puedes hacerlo asi

>> With Worksheets("Hoja" & CStr(n)) 'A partir de esta línea, el . hará
>> referencia a la hoja
Por
With Sheets(n) ' no se si al definir n como byte te dara error?? yo
utilizo integer para los contadores

el problema creo que te surgira cuando intentes crear varias hojas con el
mismo nombre

>> 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

Como opcion podrias crearla al principio e ir cambiando la colunma/fila de
pegado

Si cualquier cosa comentas

Un saludo
Juan




Respuesta Responder a este mensaje
#4 Juan
23/08/2005 - 17:58 | Informe spam
Hola Aitor

No me di cuenta que tenias un control de errores en la creacion de la hoja

si no te importa mandame el archivo a mi direccion a ver si puedo ayudarte.
quita el NOSPAM de la direccion.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida