Le calcul de la fonction est implémenté dans les boucles et à la fin, la fonction est définie égale au tableau obtenu par la boucle. La fonction fonctionne bien. Cependant, quand j'écris un sous pour retourner le tableau (et définir à nouveau l'entrée comme plage), il y a une erreur car précédemment dans la fonction dans les boucles, l'entrée est utilisée et je suppose que le sous voit qu'elle est écrasée.Dans un sous-marin, lorsque vous appelez une fonction auto-écrite qui inclut une boucle, comment éviter la complication de la réutilisation des entrées de fonction dans la boucle?
Function discount_factors(swap_rates As Range) As Variant
Dim swap_matrix(1 To 5, 1 To 5) As Double
For i = 1 To 5
For j = 1 To 5
swap_matrix(i, j) = 0
Next j
Next i
For i = 1 To 5
For j = 1 To 5 - i
swap_matrix(i + j, i) = swap_rates(j + i, 1)
Next j
swap_matrix(i, i) = 1 + swap_rates(i, 1)
Next i
inverse_matrix = Application.WorksheetFunction.MInverse(swap_matrix)
Dim df(1 To 5, 1 To 1) As Double
For i = 1 To 5
df(i, 1) = 0
For j = 1 To 5
df(i, 1) = df(i, 1) + inverse_matrix(i, j)
Next j
Next i
discount_factors=df
End Function
Sub result()
Dim swap_rates As Range
inputs = Sheet1.Range("A7:B11").Value
Sheet1.Range("C7:C11")=discount_factors(swap_rates)
End Sub
Quand je lance, il permet de déboguer et saute à la première boucle, se référant au fait que les dimensions de swap_rates utilisées dans l'entrée a changé, je suppose. Comment puis-je résoudre ce problème afin que mon sous-fonctionne sans cette complication?