programing

루프 vba에서 다음 반복으로 건너뜁니다.

elseif 2023. 4. 9. 21:07

루프 vba에서 다음 반복으로 건너뜁니다.

조건이 참일 경우 다음 반복으로 넘어가는 단순한 조건부 루프를 작성하려고 합니다.지금까지 알고 있는 코드는 다음과 같습니다.

For i = 2 To 24
    Level = Cells(i, 4)
    Return = Cells(i, 5)

    If Return = 0 And Level = 0 Then
        'Go to the next iteration
    Else
    End If
Next

난 시도했다.GoTo NextIteration단, '라벨이 정의되지 않았습니다'라는 오류가 나타납니다.이것은 매우 간단한 해결책일 것입니다만, 잘 부탁드립니다.감사해요.

For i = 2 To 24
  Level = Cells(i, 4)
  Return = Cells(i, 5)

  If Return = 0 And Level = 0 Then
    'Go to the next iteration
    GoTo NextIteration
  Else
  End If
  ' This is how you make a line label in VBA - Do not use keyword or
  ' integer and end it in colon
  NextIteration:
Next

조건이 충족되면 아무것도 하지 말고, 그렇지 않으면 필요한 처리와For루프가 다음 항목으로 이동합니다.

For i = 2 To 24
    Level = Cells(i, 4)
    Return = Cells(i, 5)

    If Return = 0 And Level = 0 Then
        'Do nothing
    Else
        'Do something
    End If
Next i

또는 조건이 충족되는 경우에만 처리되도록 절을 변경합니다.

For i = 2 To 24
    Level = Cells(i, 4)
    Return = Cells(i, 5)

    If Return <> 0 Or Level <> 0 Then
        'Do something
    End If
Next i

고토 사용

  For x= 1 to 20

       If something then goto continue

       skip this code

  Continue:

  Next x

현재 솔루션은 OP와 동일한 흐름을 생성합니다.라벨을 사용하지 않지만 OP의 요구 사항은 아닙니다."조건이 참일 경우 다음 반복으로 넘어가는 단순한 조건부 루프"만 요청했으며, 이 루프는 읽기 쉬우므로 라벨을 사용하는 것보다 더 나은 옵션일 수 있습니다.

고객님이 원하는 것은for루프는 패턴을 따릅니다.

If (your condition) Then
    'Do something
End If

이 경우, 당신의 상태는Not(Return = 0 And Level = 0)를 사용할 수 있습니다.

For i = 2 To 24
    Level = Cells(i, 4)
    Return = Cells(i, 5)

    If (Not(Return = 0 And Level = 0)) Then
        'Do something
    End If
Next i

PS: 이 조건은(Return <> 0 Or Level <> 0)

이런 거 쓸 수 있어요continue네스트된 것을 사용하여Do ... Loop While False:

'This sample will output 1 and 3 only

Dim i As Integer

For i = 1 To 3: Do

    If i = 2 Then Exit Do 'Exit Do is the Continue

    Debug.Print i

Loop While False: Next i

언급URL : https://stackoverflow.com/questions/20681306/skip-to-next-iteration-in-loop-vba