我将非常感激您对下面代码的帮助。代码将遍历所有行,如果找到某个文本字符串,它将执行一些代码。然后它将继续到包含该文本字符串的下一个单元格,依此类推。我无法弄清楚的是循环一直在无休止地进行。我不确定我创建的循环中遗漏了什么。
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
当搜索到达指定搜索范围的末尾时,它绕回到范围的开头要在发生这种环绕时停止搜索,请保存找到的第一个单元格的地址,然后根据此保存的地址测试每个连续找到的单元格地址。
所以不要这样:
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
未声明为类型Object
或Variant
。