Удалить пустые строки после автофильтра

У меня есть следующий код в моем листе Excel:

Sub DeleteRows
'Filter CMReport to delete (Blank) rows.
    With ActiveSheet
        .AutoFilterMode = False
        .Range("A1:G1").AutoFilter
        .Range("A1:G1").AutoFilter Field:=1, Criteria1:="="
        .Range("A1:G1").Offset(1, 0).SpecialCells(xlCellTypeVisible).EntireRow.Delete
    End With
End Sub

Он отфильтрует пустые строки, но не удалит их... он говорит, что строки не выбраны. Что я делаю не так.


person Justin_DavieHigh    schedule 20.03.2014    source источник


Ответы (2)


Если все, что вам нужно сделать, это удалить строки с пробелами в столбце A , вам не нужно фильтровать, просто:

Sub DeleteRows()
    Range("A:A").Cells.SpecialCells(xlCellTypeBlanks).EntireRow.Delete
End Sub
person Gary's Student    schedule 20.03.2014
comment
Хорошо, если критерий фильтра всегда Criteria1:="=" ! - person Dmitry Pavliv; 20.03.2014
comment
Все еще не работает ... У меня есть столбцы таблицы A: G, когда я фильтрую таблицу, она оставляет строки внизу, которые содержат данные только в Col F и Col G. Я могу фильтровать столбец A (как указано выше), чтобы найти строки , но тогда я не могу понять, как их удалить. - person Justin_DavieHigh; 20.03.2014
comment
Наконец-то я заставил его работать, но мне пришлось использовать этот код: Sht.Columns("E:E").SpecialCells(xlCellTypeBlanks).EntireRow.Delete - person Justin_DavieHigh; 24.03.2014
comment
@Justin_DavieHigh: Хорошая работа!! - person Gary's Student; 24.03.2014

Я бы сделал это:

Sub DeleteRows()
    With ActiveSheet
        .AutoFilterMode = False 'remove filter             
        With .Range("A:G")
            .AutoFilter Field:=1, Criteria1:="="
            On Error Resume Next ' for the case when there is no visible rows
            .Resize(.Rows.Count - 1).Offset(1, 0).SpecialCells(xlCellTypeVisible).EntireRow.Delete
            On Error GoTo 0
        End With            
        .AutoFilterMode = False 'remove filter
    End With
End Sub
person Dmitry Pavliv    schedule 20.03.2014