我尝试使用以下代码删除整行时遇到问题:
Sub Macro1()
Dim test1row As Long, test1 As Range, firstrowtodelete As Long
test1row = 1
Do
Set test1 = Sheets("Sheet1")l.Cells(test1row,1)
If test1 <> "actest" Or test1 <> "dctest" Then
firstrowtodelete = test1row
Rows(test1row).Select
Selection.Delete Shift:=xlUp
Exit Do
End If
test1row = test1row + 1
Loop
End Sub
错误在于Rows(test1row).Select
。即使它是“actest”或“dctest”,它也会删除该行。如果你知道为什么与我分享!谢谢! :)
答案 0 :(得分:1)
您的If
测试存在缺陷。它永远都是真的。
答案 1 :(得分:1)
您的代码存在两个问题。
第一个问题出现在这一行:
Set test1 = Sheets("Sheet1")l.Cells(test1row,1)
应该是:
Set test1 = Sheets("Sheet1").Cells(test1row, 1)
另一个问题在于:
If test1 <> "actest" Or test1 <> "dctest" Then
应该是这样的:
If test1 <> "actest" And test1 <> "dctest" Then
您的If
声明始终是真的。只有当单元格的值不是“actest”并且它不是“dctest”时,使用And
运算符才会给出真值,这可能是期望的行为。
以下是完整的工作代码:
Sub Macro1()
Dim test1row As Long, test1 As Range, firstrowtodelete As Long
test1row = 1
Do
Set test1 = Sheets("Sheet1").Cells(test1row, 1)
If test1 <> "actest" And test1 <> "dctest" Then
firstrowtodelete = test1row
Rows(test1row).Select
Selection.Delete Shift:=xlUp
Exit Do
End If
test1row = test1row + 1
Loop
End Sub