루프 정지 방법


3

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

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

답변:


2

에서 Range.FindNextMSDN에서 :

검색이 지정된 검색 범위의 끝에 도달하면 범위 의 시작 부분으로 줄 바꿈됩니다 . 이 랩 어라운드가 발생할 때 검색을 중지하려면 첫 번째 발견 된 셀의 주소를 저장 한 후이 저장된 주소에 대해 각 연속적인 발견 된 셀 주소를 테스트하십시오.

그래서 이것 대신에 :

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

0

내가 만든 루프에서 무엇을 놓치고 있는지 잘 모르겠습니다.

다음이 있습니다.

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

CodeObject또는 로 선언되지 않았습니다 Variant.

소스 VBA 데이터 유형-없음


추가 자료


Code은 선언 As Range되고 Range객체 유형입니다. 에 절대적으로 할당 할 수 있습니다 Nothing.
Mathieu Guindon
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.