私は配列の上にforループがあります。ループ内の特定の条件をテストし、trueの場合は次の反復にスキップします。
For i = LBound(Schedule, 1) To UBound(Schedule, 1)
If (Schedule(i, 1) < ReferenceDate) Then
PrevCouponIndex = i
Continue '*** THIS LINE DOESN'T COMPILE, nor does "Next"
End If
DF = Application.Run("SomeFunction"....)
PV = PV + (DF * Coupon / CouponFrequency)
Next
私は私ができることを知っています:
If (Schedule(i, 1) < ReferenceDate) Then Continue For
しかし、PrevCouponIndex変数にiの最後の値を記録できるようにしたいです。
何か案は?
ありがとう
このような単純なことをしてみませんか。
For i = LBound(Schedule, 1) To UBound(Schedule, 1)
If (Schedule(i, 1) < ReferenceDate) Then
PrevCouponIndex = i
Else
DF = Application.Run("SomeFunction"....)
PV = PV + (DF * Coupon / CouponFrequency)
End If
Next
VBAには、次のループ反復にすぐにジャンプするためのContinue
または他の同等のキーワードはありません。私は回避策としてGoto
を慎重に使用することをお勧めします。これが単なる例であり、実際のコードがより複雑な場合は特にそうです。
For i = LBound(Schedule, 1) To UBound(Schedule, 1)
If (Schedule(i, 1) < ReferenceDate) Then
PrevCouponIndex = i
Goto NextIteration
End If
DF = Application.Run("SomeFunction"....)
PV = PV + (DF * Coupon / CouponFrequency)
'....'
'a whole bunch of other code you are not showing us'
'....'
NextIteration:
Next
しかし、それが本当にあなたのコードのすべてであるなら、@ Brianは絶対に正しいです。 Else
文をIf
文に入れて、それを実行するだけです。
ネストされたDo ... Loop While False
を使うことで一種のcontinue
を使うことができます。
'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
Continue For
はVBAまたはVB6では無効です。
このMSDNページからVS 2005./Net 2でVB.Netに紹介されたようです。
他の人が言っているように、Goto
またはElse
を使う以外に選択肢は実際にはありません。
こんにちは私もこの問題に直面していると私は以下の例のコードを使用してこれを解決します
For j = 1 To MyTemplte.Sheets.Count
If MyTemplte.Sheets(j).Visible = 0 Then
GoTo DoNothing
End If
'process for this for loop
DoNothing:
Next j