다음을 통해 공유

for가 없는 next 구문이라고 뜨는데.. 어떻게 해결하면 되나요?

익명
2013-01-05T08:36:56+00:00

맨 아랫부분에  next j, i 부분이 for 가 없는 next 구문이라고 뜹니다.

어떻게 해결할 수 있나요?

그리고.. 혹시 가능하다면 또 오류날만한것이 있는지 봐주셨으면 합니다.

부탁드립니다!


Function SnRnd()

SnRnd = Rnd() + Rnd() + Rnd() + Rnd() + Rnd() + Rnd() + Rnd() + Rnd() + Rnd() + Rnd() + Rnd() + Rnd() - 6

End Function

Function MonteCarlo(MCflag As String, X As Double, S As Double, StartDate As Date, EndDate As Date, r As Double, q As Double, H As Double, sigma As Double, K As Double, Nsimul As Long)

Dim payoff As Double

Dim sum As Double

Dim Npaths As Double

Dim hit As Double

Dim i As Double, j As Long

Dim T As Double

Dim dt As Double

Dim drift As Double

Dim vsqrt As Double

Dim dr As Double

Npaths = (EndDate - StartDate)

T = Npaths / 365

dt = T / Npaths

drift = (r - q - (sigma ^ 2) / 2) * dt

vsqrt = sigma * Sqr(dt)

sum = 0

CallPutFlag = Mid(MCflag, 1, 1)

UpDownFlag = Mid(MCflag, 2, 1)

InOutFlag = Mid(MCflag, 3, 1)

For i = 1 To Nsimul

payoff = 0

hit = 0

For j = 1 To Npaths

If UpDownFlag = "u" Then

If S >= H Then

hit = 1

If idd = 0 Then

idd = 1

dr = j

End If

ElseIf UpDownFlag = "d" Then

If S < H Then

hit = 1

If idd = 0 Then

idd = 1

dr = j

End If

End If

If UpDownFlag = "u" Then

If CallPutFlag = "c" Then

If InOutFlag = "i" Then

If hit = 1 Then

payoff = Application.Max(0, S - X) * Exp(-r * T)

Else

payoff = K * Exp(-r * T)

End If

ElseIf InOutFlag = "o" Then

If hit = 1 Then

payoff = K * Exp(-r * T)

Else

payoff = Application.Max(0, S - X) * Exp(-r * T)

End If

ElseIf CallPutFlag = "p" Then

If InOutFlag = "i" Then

If hit = 1 Then

payoff = Application.Max(0, X - S) * Exp(-r * T)

Else

payoff = K * Exp(-r * T)

End If

ElseIf InOutFlag = "o" Then

If hit = 1 Then

payoff = K * Exp(-r * (dr / 365))

Else

payoff = Application.Max(0, X - S) * Exp(-r * T)

End If

End If

ElseIf UpDownFlag = "d" Then

If CallPutFlag = "c" Then

If InOutFlag = "i" Then

If hit = 1 Then

payoff = Application.Max(0, S - X) * Exp(-r * T)

Else

payoff = rebate * Exp(-r * T)

End If

ElseIf InOutFlag = "o" Then

If hit = 1 Then

payoff = K * Exp(-r * T)

Else

payoff = Application.Max(0, S - X) * Exp(-r * T)

End If

End If

If CallPutFlag = "p" Then

If InOutFlag = "i" Then

payoff = Application.Max(0, X - S) * Exp(-r * T)

Else

payoff = K * Exp(-r * T)

End If

ElseIf InOutFlag = "o" Then

If hit = 1 Then

payoff = K * Exp(-r * T)

Else

payoff = Application.Max(0, X - S) * Exp(-r * T)

End If

End If

End If

S = S * Exp(drift + vsqrt * Application.NormSInv(Rnd()))

Next j

sum = sum + payoff

Next i

MonteCarlo = sum / Nsimul

End Function

Microsoft 365 및 Office | Excel | 가정용 | Windows

잠긴 질문. 이 질문은 Microsoft 지원 커뮤니티에서 마이그레이션되었습니다. 질문이 도움이 되었는지 여부에 대해 응답할 수는 있지만, 메모나 회신을 추가하거나 질문을 따를 수는 없습니다.

댓글 0개 설명 없음

질문 작성자가 수락한 답변

익명
2013-01-07T00:29:16+00:00

안녕하십니까? LisaXOXOa 님

Microsoft Community 사이트를 방문해 주셔서 감사합니다.

문의 하신 Excel VBA 매크로에 대해 안내를 드리겠습니다.

말씀해 주신 매크로의 경우 해당 사이트가 아닌 MSDN 개발자 포럼에서 도움을 드리고 있습니다.

아래 링크를 참조하여 해당 포럼에 다시 문의해 주시기 바랍니다.

http://msdn.microsoft.com/ko-kr/office/

http://social.msdn.microsoft.com/Forums/ko-KR/vsto/threads

추가적인 내용이 있다면 하단의 [응답] 버튼을 눌러 회신해주시기 바랍니다.

제시해 드린 답변이 도움이 되었기를 바랍니다.

응답이 문제 해결에 도움이 되었다면, 아래에 있는 답변으로 [표시] 버튼을 눌러 주시기 바랍니다. 이는 유사한 증상을 겪는 다른 사용자들에게 도움이 될 수 있습니다.

감사합니다.

이 대답이 도움이 되었나요?

댓글 0개 설명 없음

0 추가 답변

정렬 기준: 가장 유용함