如果单元格包含值,则Excel VBA删除行

时间:2016-04-11 18:37:24

标签: excel vba excel-vba

这是我正在进行的项目的一部分。它需要在与我正在检查的列相同的行的单元格中查找值。如果A中为No或B中为空,则需要删除该行。它不起作用,但我不明白为什么。艾思,因为我真的被卡住了?

`wb1.Worksheets("Loc").Activate
For Z = 1 To iNbKids
rGeo1 = "a" & Z
rGeo2 = "b" & Z
If wb1.Worksheets("Loc").Range(rGeo1).Value = "No" Then
ActiveSheet.Rows(Z).Select
Selection.Delete
ElseIf wb1.Worksheets("Loc").Range(rGeo2).Value = " " Then
ActiveSheet.Row(Z).Select
Selection.Delete
End If
Next Z`

1 个答案:

答案 0 :(得分:2)

缺点是逐个添加或删除行,向后迭代:

For Z = iNbKids To 1 Step -1
    rGeo1 = "a" & Z
    rGeo2 = "b" & Z
    If wb1.Worksheets("Loc").Range(rGeo1).Value = "No" Or wb1.Worksheets("Loc").Range(rGeo2).Value = " " Then
        wb1.Worksheets("Loc").Rows(Z).Delete
    End If
Next Z

另外,如果使用Or,则代替两个。

缩短代码的另一种方法是使用With Block:

With wb1.Worksheets("Loc")
    For Z = iNbKids To 1 Step -1
        rGeo1 = "a" & Z
        rGeo2 = "b" & Z
        If .Range(rGeo1).Value = "No" Or .Range(rGeo2).Value = " " Then
            .Rows(Z).Delete
        End If
    Next Z
End With

没有前面.的所有内容都与首先输入wb1.Worksheets("Loc").类似。