Movimiento de celda acriva en planilla filtrada

05/11/2008 - 16:02 por puntero ubicacion | Informe spam
Tengo una hja que contiene datos.
Cuando le pongo Autofiltro y selecciono una codicion, "desaparecen" ciertas
filas.
Ahora bien, cuando en una macro quiero recorrer las distintas filas , la
instruccion Activecell.Offset(1,0).Select hace que se recorran TODAS las
filas, aun las filtradas.

Fui claro? Como hago para que la celda activa se coloque solamente en las
celdas visibles cuando tengo un filtro colocado?

Gracias
Juan Carlos

Preguntas similare

Leer las respuestas

#6 Juan M
06/11/2008 - 17:23 | Informe spam
Hola Juan Carlos,

En VBA la concatenación de texto se hace también de esa forma con el &.
El siguiente código te pide el nombre de la hoja, crea la hoja y le cambia
el nombre por el que has escrito:
Ten cuidado con no exceder de 30 caracteres en el nombre de la hoja, sino
falla.
También hay caracteres prohibidos, el *, / , los corchetes, ...

Todo esto se puede controlar pero básicamente sería así:

Sub NombreHoja()

Dim NM As String

NM = InputBox("Escribe el nombre de la hoja", "NOMBRE")
Worksheets.Add
ActiveSheet.Name = "Hoja " & NM

End Sub

Un saludo,
Juan

"puntero ubicacion" escribió
o que sucede es que en realidad copio a otra hoja, o sea,

> var6 = Cells(fila, 8)


sheets("otrahoja").select
> Cells(fila + 10, 8) = var6



Pero creo que lo mas practico termina siendo copiar directamente, no es
cierto?
Ya que estamos te hago una pregunta :
Yo quiero que el usuario ingrese un nombre y ese nombre sea el nombre de
una
nueva hoja que se abre.
Existe en VBA algo similar al & que se utiliza en las planilla de excel?

Gracias
JC





"Juan M" escribió:

Hola Juan Carlos,

Unos comentarios habituales cuando haces macros, en la mayoría de las
ocasiones no es necesario seleccionar las celdas, rangos, hojas para
hacer
las cosas.
En el caso que nos presentas tampoco sería necesario asignar a una
variable
el valor de una celda para luego esa variable escribirla en una celda,
simplemente escribe en la celda destino lo que tiene la celda origen:

> var6 = Cells(fila, 8)
> Cells(fila + 10, 8) = var6

por:

> Cells(fila + 10, 8) = Cells(fila, 8)

A mi, personalmente, me gusta declarar las variables y forzar además su
declaración (Option Explicit).

Si solo quieres copiar tus datos, filtrados o no, de un sitio a otro sin
modificar el orden o realizar ningún tipo de operación, me parece más
simple
copiar las celdas visibles y pegarlas donde corresponda.

Algo así,

Sub test2()
Range("B19:J" & Range("B29").End(xlDown).Row).ClearContents
Range("c10:h" &
Range("C10").End(xlDown).Row).SpecialCells(xlCellTypeVisible).Copy
Range("c20")
End Sub

Si de todas formas prefieres hacerlo por medio de un bucle, nos lo
comentas.

Un saludo,
Juan


"puntero ubicacion" escribió
> Gracias Juan M por la respuesta.
> La verdad es que no entendi como solucionarlo.
>
> La macro que estoy haciendo es, basicamente, algo asi:
>
>
> Range("B19:J29").Select
> Selection.ClearContents
> Range("C10").Select
> While ActiveCell.Value <> ""
> fila = ActiveCell.Row
> var1 = Cells(fila, 3)
> var2 = Cells(fila, 4)
> var3 = Cells(fila, 5)
> var4 = Cells(fila, 6)
> var5 = Cells(fila, 7)
> var6 = Cells(fila, 8)
> Cells(fila + 10, 3) = var1
> Cells(fila + 10, 4) = var2
> Cells(fila + 10, 5) = var3
> Cells(fila + 10, 6) = var4
> Cells(fila + 10, 7) = var5
> Cells(fila + 10, 8) = var6
> ActiveCell.Offset(1, 0).Select
>
> Wend
>
> FIN DE LA MACRO
>
> Como veras, borra un area y luego lee lo que hay en las celdas C10
> hasta
> H10
> y luego lo va repitiendo hasta que encuentra una celda vacia.
> El tema es que si los datos tienen un autofiltro, cuando hace el
> activecell.offset pasa el control a una celda que puede estar oculta
> porque
> no quiero que aparezca.
> No se si soy claro.
>
> Podran ayudarme?
> Gracias
> JC
>
>
>
> "Juan M" escribió:
>
>> Hola Juan Carlos,
>>
>> Revisa la ayuda sobre SpecialCells(xlVisible).
>>
>> Si tienes dudas de como aplicarlo, es conveniente que expongaas la
>> macro
>> que
>> estás empleando y lo que esperas que haga para poder indicarte alguna
>> otra
>> opción.
>>
>> Un saludo,
>> Juan
>>
>>
>> "puntero ubicacion" escribió
>> > Tengo una hja que contiene datos.
>> > Cuando le pongo Autofiltro y selecciono una codicion, "desaparecen"
>> > ciertas
>> > filas.
>> > Ahora bien, cuando en una macro quiero recorrer las distintas filas
>> > ,
>> > la
>> > instruccion Activecell.Offset(1,0).Select hace que se recorran TODAS
>> > las
>> > filas, aun las filtradas.
>> >
>> > Fui claro? Como hago para que la celda activa se coloque solamente
>> > en
>> > las
>> > celdas visibles cuando tengo un filtro colocado?
>> >
>> > Gracias
>> > Juan Carlos
>> >
>>
>>
>>



email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida