删除不连续的整行时出错

时间:2014-01-24 08:59:43

标签: excel vba

我有以下代码,它向下看M列以找到空单元格。每次找到空单元格时,都会删除整行。

代码总是留下一行未删除。

有人可以帮助识别代码有什么问题吗?我怀疑在删除行时,单元格计数出错了。

Private Sub CreateInvoice_Click()

Dim LastRow As Long
Dim cl As Range, rng As Range

With Sheet4
    LastRow = .Cells(.Rows.Count, "A").End(xlUp).Row

Set rng = Sheet4.Range("M1:M" & LastRow)

For Each cl In rng
If IsEmpty(cl) Then
 cl.EntireRow.Select ' MsgBox .Range("A" & cl.Row).Value & " has nothing in it"
End If
Next

End With

End Sub

2 个答案:

答案 0 :(得分:1)

我会使用过滤器,因为它是删除空行的最快和最有效的方法。此外,下面不使用.Select方法。

Sub RemoveEmpties()
    Dim ws As Worksheet
    Dim rng As Range
    Dim lastRow As Long

    Set ws = Sheet4

    lastRow = ws.Range("M" & ws.Rows.Count).End(xlUp).Row

    Set rng = ws.Range("M1:M" & lastRow)

    With rng
        .AutoFilter Field:=1, Criteria1:=""
        .Offset(1, 0).SpecialCells(xlCellTypeVisible).EntireRow.Delete
    End With

    ws.AutoFilterMode = False
End Sub

答案 1 :(得分:0)

Columns("M:M").Select

Selection.SpecialCells(xlCellTypeBlanks).Select      
Selection.EntireRow.Delete

尝试使用此