Vba 删除行,直到单元格=";总数;

Vba 删除行,直到单元格=";总数;,vba,excel,row,Vba,Excel,Row,我想用这个宏删除最后一个空行之后的所有单元格,直到列“E”中的行为“总计” 我已经尝试过了,但在循环线上出现了错误: Sub delete() Dim r As Range Dim lastRow As Long Dim c As Range Dim i As Long i = lastRow + 1 With ThisWorkbook.Worksheets("Sheet1") lastR

我想用这个宏删除最后一个空行之后的所有单元格,直到列“E”中的行为“总计”

我已经尝试过了,但在循环线上出现了错误:

    Sub delete()

    Dim r As Range
    Dim lastRow As Long
        Dim c As Range
    Dim i As Long
        i = lastRow + 1

        With ThisWorkbook.Worksheets("Sheet1")
            lastRow = .Cells(.Rows.Count, "B").End(xlUp).Row
       End With
    Do
    Set r = Range("B" & i)
        If Len(r) = 0 Then r.EntireRow.delete
    i = i + 1

    Loop Until Cells(i, 5).Value = "Total"

    End Sub
下面是我的桌子的外观示例:


我将使用以下类似的方法,它将继续通过所有单元格,直到
E&I
=total:

Public Sub Delete()

Dim i As Long

i = 2 'Start from row 2

Application.ScreenUpdating = False

With ThisWorkbook.Worksheets("Sheet1")

    Do Until .Range("E" & i).Value = "Total"
        If .Range("B" & i).Value = vbNullString Then
            .Rows(i).EntireRow.Delete
        Else
            i = i + 1 'Only increment if the row hasn't been deleted to prevent skipping rows
        End If
    Loop

End With

Application.ScreenUpdating = True

End Sub

错误说明了什么?运行时错误“1004”:应用程序定义的错误或对象定义的错误抱歉,我忘记添加一些内容-现在它正在工作,但问题是它将只删除前3行,然后停止工作没有问题。我稍微修改了一下,添加了
application.screenUpdatement=False
,这将产生性能奖励。