Function bondprice(d As Date, r As Double) As Long
'the price of the bond
Dim t(9) As Double
t(0) = (Application.Date(2013, 7, 15) - d) / 365
t(1) = (Application.Date(2013, 1, 15) - d) / 365
t(2) = (Application.Date(2012, 7, 15) - d) / 365
t(3) = (Application.Date(2012, 1, 15) - d) / 365
t(4) = (Application.Date(2011, 7, 15) - d) / 365
t(5) = (Application.Date(2011, 1, 15) - d) / 365
t(6) = (Application.Date(2010, 7, 15) - d) / 365
t(7) = (Application.Date(2010, 1, 15) - d) / 365
t(8) = (Application.Date(2009, 7, 15) - d) / 365
t(9) = (Application.Date(2009, 1, 15) - d) / 365
bondprice = 0
For i = 1 To 9
If t(i) > 0 Then
bondprice = bondprice + 2 * Exp(-r * t(i))
Else
bondprice = bondprice
End If
Next i
If t(0) > 0 Then
bondprice = bondprice + 102 * Exp(-r * t(0))
Else
bondprice = bondprice
End If
End Function
我是刚刚开始学习VBA的,也没有看什么入门书。所以都不知道怎么调试。想问一下为什么无法输出正常数值结果?
------解决方案--------------------------------------------------------
除非你赋值到一个单元格,否则怎么可能显示?你这里没有输出语句,你预期什么输出?
而且你债券的定价似乎是错误的,不需要乘以2
------解决方案--------------------------------------------------------
要输出到单元格,你需要用诸如:ActiveSheet.Range("A1")="haha"
这种基本的东西你需要找本VBA编程的东西系统学吧?瞎试怎么可能搞对