Desplazamiento con autofiltro

Ahí va la pregunta.
En excel, tenemos la instrucción: ActiveCell. Offset(1, 0). Select con la que nos desplazaríamos una celda hacia abajo, pero necesito lo mismo cuando tenemos aplicado un filtro y las filas no son consecutivas, es decir, imaginemos que al aplicar el filtro de la columna A, nos quedan visibles las filas 3, 5 y 9. Si aplicamos la instrucción anterior estando posicionados en la celda A3, iríamos a parar a la A4, y lo que mi me interesa es que vaya a a A5, que es la siguiente visible a la A3.
Me parece que me he enrollado un poco, pero imagino que ha quedado claro.
A ver si puedes echarme una mano.

2 respuestas

Respuesta
1
Está claro y espero que sea clara la respuesta.
Hay que seleccionar el rango y luego moverse dentro de ese rango con un For..
Ejemplo:
Sub SelectCeldasFiltradas()
'macro grabada el 19/07/05 por Elsamatilde
Dim UnaCelda, celdita
'Indicar una celda de la base filtrada:
UnaCelda = "A20"
'se recorre la región obtenida
For Each celdita In Range(UnaCelda).CurrentRegion.SpecialCells(xlCellTypeVisible)
celdita.Select
'como ejemplo solo muestra el valor
MsgBox celdita.Value
'se repite la búsqueda en las otras celdas del rango
Next celdita
'Para recorrer solo las celdas de una columna y no cada celda del rango
For Each celdita In Range(UnaCelda).CurrentRegion.SpecialCells(xlCellTypeVisible)
'se controla si es la col A ya que solo queremos movernos en esta col
If celdita.Column = 1 Then
celdita.Select
MsgBox celdita.Value
End If
Next celdita
End Sub
PD) No te pierdas mi manual '300 Macros' explicadas en español. Allí encontrarás estas instrucciones y una Demo gratis para descargar
Respuesta

'fragmento del código para moverse en las filas después de aplicar un filtro
For Each celda In Range("A1").CurrentRegion.Columns(400).SpecialCells(xlCellTypeVisible)
     u = celda.Row
     If u > 1 Then 'en este caso mayor que 1 porque la primer fila contiene los titulos
                            'u corresponde a la fila cuando nos movemos despues de aplicar el filtro ej                                              filas (3,7,120,255)
               elemento= Cells(u,7)
     End If

Next

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas