아래 코드에 대한 도움을 주시면 감사하겠습니다. 코드는 모든 행을 통과하며 특정 텍스트 문자열을 찾으면 일부 코드를 실행합니다. 그런 다음 해당 텍스트 문자열 등을 포함하는 다음 셀로 계속 진행합니다. 내가 알아낼 수없는 것은 루프가 끝없이 계속된다는 것입니다. 내가 만든 루프에서 무엇을 놓치고 있는지 잘 모르겠습니다.
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
답변
에서 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
답변
내가 만든 루프에서 무엇을 놓치고 있는지 잘 모르겠습니다.
다음이 있습니다.
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
.