2017-09-28 24 views
1

我有数据并完成了一些过滤。现在我想删除整行直到最后一个可见行。另外,在这种情况下,我不想包含我的标题(第5行)。我不知道我应该如何解决与下面的代码:选择过滤的数据并删除以显示最后一行,不包括标题

Dim row1 As Variant 
row1 = Rows(5).Offset(1, 0) 
lastrow = ActiveSheet.Cells(Rows.Count, "A").End(xlUp).Row 
Rows("row1:" & lastrow).SpecialCells(xlCellTypeVisible).EntireRow.Delete 
+1

替换'“ROW1:”'和'ROW1&“:“' –

回答

0

您需要添加一个错误处理程序,只要用SpecialCells工作。

Sub DeleteVisibleRows() 
    With ActiveSheet 
     On Error Resume Next 
     .Range("A5", .Range("A" & .Rows.Count).End(xlUp)).Offset(1).EntireRow _ 
     .SpecialCells(xlCellTypeVisible).Delete 
     On Error GoTo 0 
    End With 
End Sub 
+0

我可以理解为什么需要错误处理程序谢谢你的代码顺便说一句 –

+0

'SpecialCells'将抛出一个错误,如果它不”?!找到任何细胞。 –

0

请试试这个...

Dim lr As Long 
lr = Cells(Rows.Count, 1).End(xlUp).Row 
Range("A6:A" & lr).SpecialCells(xlCellTypeVisible).EntireRow.Delete 

试试这个,如果你只是想,如果你要删除可见行在数据集上应用过滤器。

Dim lr As Long 
lr = Cells(Rows.Count, 1).End(xlUp).Row 
If ActiveSheet.FilterMode Then 
    On Error Resume Next 
    Range("A6:A" & lr).SpecialCells(xlCellTypeVisible).EntireRow.Delete 
End If 
0

请尝试以下:

Sub test() 

    Dim lastrow As Long 
    Dim rng As Range 

    lastrow = ActiveSheet.Cells(Rows.Count, "A").End(xlUp).Row 

    Set rng = Rows("6:" & lastrow) 

    rng.Delete Shift:=xlUp 

    End Sub 
相关问题