条件が真の場合、次の反復に進む単純な条件付きループを作成しようとしています。私がこれまでに持っているコードは次のとおりです。
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 GoTo NextIteration
'Go to the next iteration
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の要件ではありませんでした。 「条件がtrueの場合、次の反復に進む単純な条件付きループ」のみを要求しました。これは読みやすいため、Labelを使用するよりも良いオプションです。
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)
と同等です
ループ内の任意のポイントから次の反復に移動するために見つけた最も簡単な方法(PascalのContinue演算子のアナログ)は、追加の単一パスループと演算子Exit For
を使用することです。
'Main loop
For i = 2 To 24
'Additional single pass loop
For t = 1 To 1
Level = Cells(i, 4)
Return = Cells(i, 5)
If Return = 0 And Level = 0 Then
'Go to the next iteration
Exit For
Else
End If
Next
Next