배열에 대한 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
진술에 절을 넣고 그것을 끝내십시오.
답변
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
답변
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
답변
코드를 건너 뛰기 위해 else를 사용하면 결국 모든 것을 끝낼 수 있습니다. 그러면 GoTo를 사용할 수 없게됩니다.
If 6 - ((Int_height(Int_Column - 1) - 1) + Int_direction(e, 1)) = 7 Or (Int_Column - 1) + Int_direction(e, 0) = -1 Or (Int_Column - 1) + Int_direction(e, 0) = 7 Then
Else
If Grid((Int_Column - 1) + Int_direction(e, 0), 6 - ((Int_height(Int_Column - 1) - 1) + Int_direction(e, 1))) = "_" Then
Console.ReadLine()
End If
End If