这是我正在进行的项目的一部分。它需要在与我正在检查的列相同的行的单元格中查找值。如果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`
答案 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").
类似。