Функция VBA, где двойной цикл обеспечивает только один выход - PullRequest
0 голосов
/ 07 октября 2018

Я новичок в VBA и пытаюсь создать триномиальное дерево ценообразования опционов с параметрами от -n до n.Как я могу переписать свою функцию VBA с двойным циклом, чтобы обеспечить весь вывод, так как кажется, что он показывает только значение S.В конце я хочу суммировать все значения и обесценить их, но я не могу пройти мой двойной цикл, предоставляя только один выход.Если я поместил MsgBox между k и i, он ничего не возвращает.Пожалуйста, кто-нибудь может помочь заставить это работать, поскольку у меня еще нет опыта работы с VBA.

Public Function LoopTest(S As Double, u As Double, n As Integer)

    Dim i As Integer
    Dim j As Integer
    Dim k As Integer

    Dim St() As Double
    ReDim St(2 * n + 1)

    For k = 0 To n Step 1
        For i = -k To k Step 1
            St(i, k) = S * u ^ i
            Debug.Print St(i, k)
            MsgBox ("DebugToPrint")
            ' Payoff(i,k) = Application.WorksheetFunction.Max((St(i,k) - 20), 0)
        Next i
    Next k

    ' For i from n to 2 step -1
    ' For j from 1 to n - 2
    '     Payoff(i - 1, j) = Payoff(i, j) + Payoff(i, j + 1) + Payoff(i, j + 2)
    ' Next i
    ' Next k

    LoopTest = St()

End Function

Как мне получить вывод

k=0   St = S*u^0 
k=1   St = S*u^-1 , St = S*u^0 , St = S*u^1 
k=2   St = S*u^-2 , St = S*u^-1 , St = S*u^0 , St = S*u^1 , St = S*u^2

и т. Д., А затем суммировать все впоследствии каквыход

1 Ответ

0 голосов
/ 07 октября 2018

Я не совсем следую примеру, но из описания это звучит так, как будто вы заинтересованы в рекурсивном процессе.Это может быть сложно и оставит вас в бесконечном цикле, если вы не будете осторожны.Этот предыдущий пост поможет вам? Перестановка VBA "Для циклов" Перестановка?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...