找到值

时间:2016-02-20 08:07:46

标签: excel-vba vba excel

我想在列中找到的值之后删除指定的行数。我在A3中找到了一个搜索值,然后我想删除第4行到指定行数的行,比如从第4行到第11行。 我的代码删除了备用行。如果我指定~Rows(" cnt1:cnt2")则会出错。 需要指导以更正我的代码中的错误。代码运行之前和之后的图像如下。它应该删除包含aa,bb,cc,dd .....

的连续行

image before code run image after code run

以下是我的代码。

 Sub Asearch()
Dim found As Range
Dim FR As Long
Dim cnt1 As Long
Dim cnt2 As Long
   Set found = Sheets("Sheet1").Columns("A").Find(what:="Swati", LookIn:=xlValues, lookat:=xlWhole)
    If found Is Nothing Then
       MsgBox "Not found"
       Else
       MsgBox "Found on row " & found.Row
       FR = found.Row
       cnt1 = FR + 1
       Debug.Print cnt1
       cnt2 = 11
       Do While cnt1 <= cnt2
          Rows(cnt1).EntireRow.Delete
          cnt1 = cnt1 + 1
          Debug.Print cnt1
       Loop
    End If
End Sub  

根据@micstr指南编辑帖子。问题解决了。更新后的代码如下所示。

Sub Asearch2()
Dim found As Range
Dim FR As Long
Dim cnt1 As Long
Dim cnt2 As Long
   Set found = Sheets("Sheet1").Columns("A").Find(what:="Swati", LookIn:=xlValues, lookat:=xlWhole)
    If found Is Nothing Then
       MsgBox "Not found"
       Else
       MsgBox "Found on row " & found.Row
       FR = found.Row
       cnt1 = FR + 1
       Debug.Print cnt1
       cnt2 = 11
       Do While cnt2 >= cnt1
          Rows(cnt2).EntireRow.Delete
          cnt2 = cnt2 - 1
          Debug.Print cnt2
       Loop
    End If
End Sub

1 个答案:

答案 0 :(得分:1)

当你继续向前推动计数器时,循环中出现错误。当您删除整行时,索引会向上移动。所以

1 aa
2 bb
3 cc

当你删除aa时,bb向上移动到1,所以现在向计数器cntl添加一个正在查看位置2.并且你删除了cc离开bb。已经上升到一个地方。

1 bb
2 cc

要解决此问题,您可能希望立即标记所有行并将其删除为一个块。或者继续使用“删除整行”并确定如何移动计数器。 (想想看,你会看到cnt2正在改变,即删除行时向上移动cnt2 = cnt2 - 1)。

或者另一种可能更容易调试的方法是从底部开始向上工作而不是向下。

如果您需要进一步的帮助,请告诉我。