Obtener el rango de celdas visibles despues Autofilter en Excel usando VBA

3 envíos / 0 nuevos
Último envío
poblanomx
Imagen de poblanomx
Offline
última acción: Hace 6 años 1 mes
alta: 27/02/2018 - 16:09
Puntos: 35
Obtener el rango de celdas visibles despues Autofilter en Excel usando VBA

 

Hola:

Estoy creando una macro en cual aplico un filtro de acuerdo a una condicion, esto lo hago porque quiero llenar un control ListView con el resultado del filtro. La primera vez si funciona (Renglones de 1 al 13 consecutivos) si puedo llenar mi ListView:

 Este es cuando doy click en el listview (INVOICES) y muestra todos los datos del filtro sin problema, pero cuando le doy click en el segundo registro del ListView (INVOICES), NO Muestra ningun dato:

 

 

 

 

  y resulta que si hay datos en el filtro aplicado:

 

 Noté que el consecutivo cambia, es decir el primer filtro los numeros de renglones son consecutivos (1 al 12), pero en este segundo filtro, va del 1 se brinca del 13 al 24 (Resultado del filtro).

Quiero obtener el rango de esos datos obtenidos por el filtro y poder leerlos para colocarlos en mi ListView (Concepts).

Utilizo este codigo vba para obtener el rango y el numero de renglones que conforman dicho rango:

Dim rngData as Range

 Set rngData = ActiveWorkbook.Sheets("Conceptos").AutoFilter.Range.SpecialCells(xlCellTypeVisible)

y esta linea para contar los renglones

RowCount = rngData.Rows.Count

Pero siempre el resultado es 1 y no lee nada a pesar de que si hay datos.

Alguien me puede ayudar?

como obtener ese rango o mas bien los datos de ese filtro y saber cuantos renglones son?

En espera de su apoyo.

Saludos.

pacomegia
Imagen de pacomegia
Offline
última acción: Hace 1 día 22 horas
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntosNivel 5 - 4000 puntosadministrador
alta: 27/12/2006 - 23:26
Puntos: 11175
areas

Cuando aplicas un filtro y el resultado es discontínuo, es como si el rango resultado estuviese formado por varios rangos, que se denominan Áreas.

Entonces el Rango principal no tiene filas, ni columnas, sino que son los rangos elementales o áreas los que tienen las propiedades habituales de un rango. (bueno, si no dices nada parece que está tomando el valor del área 1, por eso te dice que tiene 1 fila)

Se me ocurre que puedes hacer un bucle por las áreas

Te dejo un ejemplo que recorre las áreas dentro del rango resultado del autofiltro. (Si el resultado es contínuo, pues sólo habrá un área y funcionará también en ese caso)

With rngData

      For i = 1 To .Areas.Count

         Debug.Print .Areas(i).Address

      Next

End With

 

 

de cada área puedes obtener el número de filas o lo que te interese, es a fin de cuentas un rango

rngData.Areas(i).Rows.Count

 

 

------
Ya sé Excel, pero necesito más.

poblanomx
Imagen de poblanomx
Offline
última acción: Hace 6 años 1 mes
alta: 27/02/2018 - 16:09
Puntos: 35
Hola:Excelente respuesta, si

Hola:

Excelente respuesta, si me ayudo bastante.

Gracias por tu apoyo.