VBA: Al filtrar, cómo indicar a la macro que seleccione todas las filas visibles, resultado del filtro

Tengo un rango de celdas que abarca 19 columnas y 650 líneas.

Dentro de la macro, quiero que esta 1) Filtre todo el contenido que tenga valores en la columna "G"; 2) Seleccione exclusivamente las celdas visibles resultado del filtro y 3)Borre las filas con las celdas visibles, es decir, las que sí tienen datos en la columna "G".

Así quedó redactado:

Range("G1").Select
Selection.AutoFilter
ActiveSheet.UsedRange.AutoFilter Field:=7, Criteria1:="<>"
Range("G16:G607").Select
Selection.SpecialCells(xlCellTypeVisible).Select
Selection.EntireRow.Delete

Desgraciadamente, el range ("g16:g607") expresado en el cuarto renglón quedará obsoleto cuando siga introduciendo datos a la lista.

¿Cómo cambiar el ("G16:G607") por algo que varíe según varia el contenido de las celdas?

1 respuesta

Respuesta
1

H o  l a:

Supongo que en la fila 1 tienes encabezados, si es así, entonces prueba con lo siguiente:

Sub filtrar()
    If ActiveSheet.AutoFilterMode Then ActiveSheet.AutoFilterMode = False
    u = Range("G" & Rows.Count).End(xlUp).Row
    If u = 1 Then Exit Sub
    Range("G1").Select
    Selection.AutoFilter
    ActiveSheet.UsedRange.AutoFilter Field:=7, Criteria1:="<>"
    Range("G2:G" & u).Select
    Selection.SpecialCells(xlCellTypeVisible).Select
    Selection.EntireRow.Delete
    If ActiveSheet.AutoFilterMode Then ActiveSheet.AutoFilterMode = False
    Range("G1").Select
End Sub

':)
S a l u d o s . D a n t e   A m o r
':) Si es lo que necesitas. Recuerda valorar la respuesta. G r a c i a s.

Excelente, funcionó de maravilla y con esto no pierdo información al capturar o borrar información en la hoja después de grabar la macro¡Muchas Gracias por compartir lo que sabes! Saludos.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas