为什么我必须多次为每个循环运行my来删除表中的行?

时间:2016-08-05 19:59:30

标签: excel vba excel-vba macros excel-2010

我试图根据每行中的值删除excel表格中具有多个表格的表格中的行。经过大量的研究和试验和错误,我已经让我的宏工作,除了我必须多次运行它来实际删除所有“坏”行。这是我到目前为止所做的:

context.Load(
            items,
                columns => columns.Include( 
                i=> i["Title"],
                i=> i["Enlace"],
                i=> i["Posicion"],
                i=> i["Idioma"],
                i=> i["Funcion"]));

如果我运行它五次,宏会删除表中我不想要的所有行,但是我宁愿不必多次运行它,因为我正在为其他人构建此工作簿也用。

1 个答案:

答案 0 :(得分:0)

解决方案是将For循环放在Do循环中;然后在Do循环中重复For循环,完成一些删除。

Option Explicit

Sub RemovePartsOfTable()
Dim flagNoRowDeletedInLoopCycle As Boolean
Dim row As Range

Do

    flagNoRowDeletedInLoopCycle = False

    For Each row In ActiveSheet.ListObjects("Table6").DataBodyRange.Rows

        If row.Columns(6).Value = "" Then 'to exit when it hits the end of the used cells

            Exit For

        ElseIf row.Columns(1).Value <> "P" And row.Columns(1).Value <> "B" _
            And row.Columns(2).Value <> "B" _
            And row.Columns(2).Value <> "P" Then

            row.Delete

            flagNoRowDeletedInLoopCycle = True

        End If

    Next

    If flagNoRowDeletedInLoopCycle = False Then Exit Do

Loop

End Sub