0
函數的計算是在循環中實現的,最後函數被設置爲等於循環所實現的數組。該功能正常工作。然而,當我編寫一個sub來返回數組(並將輸入再次定義爲範圍)時,會出現錯誤,因爲之前在循環中的函數中使用了輸入,並且我的猜測是sub會將其視爲覆蓋。在一個子程序中,當調用一個包含一個循環的自寫函數時,如何避免循環中函數輸入重用的複雜性?
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
當運行它,它調試並跳轉到第一環路,參照我假定一個事實,即在輸入中使用swap_rates的尺寸發生了變化。我如何解決這個問題,以便我的子運行沒有這種併發症?