martes, 5 de junio de 2018

VBA: Recorrer solo los elementos filtrado de una tabla

Tiempo atrás publiqué un post donde exponía como copiar y pegar únicamente los registros filtrados de una tabla...

Hoy veremos una variante, aprenderemos a recorrer esos elementos filtrados y visibles de una tabla.


Partiremos de una tabla con varios campos a la cual hemos aplicado un filtro cualquiera, por ejemplo, por el país España:

VBA: Recorrer solo los elementos filtrado de una tabla



Comprobamos en la imagen que las filas visibles son: 2, 6, 10, 14 y 18

Veremos dos procedimientos muy similares...
Uno primero empleando la propiedad de los rangos
.SpecialCells(xlCellTypeVisible)
y una segunda de la propiedad
.EntireRow.Hidden


Insertaremos el siguiente procedimiento en un módulo estándar:

Sub LoopSpecialTypeVisible()
Dim celda As Range, rng As Range
'definimos el rango a recorrer.. que será un campo cualquiera de la tabla
Set rng = Range("TblDatos[campo3]")
'recorremos ese rango.. pero solo aquellas celdas visibles!!
For Each celda In rng.SpecialCells(xlCellTypeVisible)
    'llevamos la dirección de la celda a la Ventana de inmediato
    Debug.Print celda.Address
Next celda

End Sub



Si lanzamos el procedimiento, en la Ventana de inmediato, veremos:
$C$2
$C$6
$C$10
$C$14
$C$18


Una segunda manera la podemos ver en este procedimiento de en un módulo estándar:

Sub LoopSpecialHidden()
Dim celda As Range, rng As Range
'definimos el rango a recorrer.. que será un campo cualquiera de la tabla
Set rng = Range("TblDatos[campo3]")
'recorremos ese rango.. pero solo aquellas celdas visibles!!
For Each celda In rng
    'verificamos si la fila está mostrada (no oculta)
    If celda.EntireRow.Hidden = False Then
        'llevamos la dirección de la celda a la Ventana de inmediato
        Debug.Print celda.Address
    End If
Next celda

End Sub


LLegando al mismo resultado...

OJO!!, por que ambas maneras emplean una propiedad de visibilidad, lo que implica que si 'ocultamos' (no solo filtramos) una fila, ésta no aparecerá en nuestros listados.

No hay comentarios:

Publicar un comentario