我试图根据每行中的值删除excel表格中具有多个表格的表格中的行。经过大量的研究和试验和错误,我已经让我的宏工作,除了我必须多次运行它来实际删除所有“坏”行。这是我到目前为止所做的:
context.Load(
items,
columns => columns.Include(
i=> i["Title"],
i=> i["Enlace"],
i=> i["Posicion"],
i=> i["Idioma"],
i=> i["Funcion"]));
如果我运行它五次,宏会删除表中我不想要的所有行,但是我宁愿不必多次运行它,因为我正在为其他人构建此工作簿也用。
答案 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