如何让循环停止

如何让循环停止

我将非常感激您对下面代码的帮助。代码将遍历所有行,如果找到某个文本字符串,它将执行一些代码。然后它将继续到包含该文本字符串的下一个单元格,依此类推。我无法弄清楚的是循环一直在无休止地进行。我不确定我创建的循环中遗漏了什么。

Sub FINDnSELECT()

Dim WS As Worksheet
Dim Code As range

range("A1").Select

For Each WS In ThisWorkbook.Worksheets
    With WS.UsedRange
        Set Code = .cells.Find(What:="TEST")
        If Not Code Is Nothing Then
            Do Until Code Is Nothing

              Code.Select
              'my code

              Set Code = .FindNext(Code)
            Loop
        End If
    End With
    Set Code = Nothing
Next

End Sub

答案1

Range.FindNext在 MSDN 上

当搜索到达指定搜索范围的末尾时,它绕回到范围的开头要在发生这种环绕时停止搜索,请保存找到的第一个单元格的地址,然后根据此保存的地址测试每个连续找到的单元格地址。

所以不要这样:

If Not Code Is Nothing Then
    Do Until Code Is Nothing

你会想要这样的东西:

Dim firstFoundAddress As String

If Not Code Is Nothing Then
    firstFoundAddress = Code.Address
    Do
        '...
        Set Code = .FindNext(Code)
    While firstFoundAddress <> Code.Address
End If

答案2

我不确定我创建的循环缺少了什么。

您拥有以下内容:

Dim Code As range

...

            Do Until Code Is Nothing

...

            Loop

然而:

**Nothing**

This keyword/value can only be used with variables declared as Object or Variant

Code未声明为类型ObjectVariant

来源VBA 数据类型 - 无


进一步阅读

相关内容