Article ID: 101245
Article Last Modified on 1/8/2003
' Enter each Declare statement on one, single line:
Declare Function MIRRC Lib "MSAFINx.DLL" (values#, ByVal cvalues%,
ByVal finance#, ByVal reinvest#) As Double
Declare Function NPVC Lib "MSAFINx.DLL" (ByVal Rate1#, values#,
ByVal cvalues%) As Double
Declare Function IRRC Lib "MSAFINx.DLL" (values#, ByVal cvalues%,
ByVal Guess#) As Double
Function IRR (values() As Double, ByVal Guess As Double) As Double
On Error GoTo IrrErr
iArgMin% = LBound(values)
cArg% = UBound(values) - iArgMin%
IRR = IRRC#(values(iArgMin%), cArg%, Guess)
Exit Function
IrrErr:
MsgBox (Str$(Err))
Exit Function
End Function
' Enter the following Function statement on one, single line:
Function MIRR (values() As Double, ByVal finance As Double,
ByVal reinvest As Double) As Double
On Error GoTo MirrErr
iArgMin% = LBound(values)
cArg% = UBound(values) - iArgMin%
MIRR = MIRRC#(values(iArgMin%), cArg%, finance, reinvest)
Exit Function
MirrErr:
MsgBox (Str$(Err))
Exit Function
End Function
Function NPV (ByVal Rate1 As Double, values() As Double) As Double
On Error GoTo NpvErr
iArgMin% = LBound(values)
cArg% = UBound(values) - iArgMin%
NPV = NPVC#(Rate1, values(iArgMin%), cArg%)
Exit Function
NpvErr:
MsgBox (Str$(Err))
Exit Function
End Function
Sub Form_Click ()
Static Values(5) As Double ' Set up array.
Fmt = "###,##0.00" ' Define money format.
Guess = .1 ' Guess starts at 10%.
RetRate = .0625 ' Set fixed internal rate.
Values(0) = -70000 ' Business start-up costs.
' Positive cash flows reflecting income for four successive years.
Values(1) = 22000: Values(2) = 25000
Values(3) = 28000: Values(4) = 31000
NetPVal = NPV(RetRate, Values()) ' Calculate net present value.
Msg = "The net present value of these cash flows is "
Msg = Msg & Format(NetPVal, Fmt) & "."
MsgBox Msg ' Display net present value.
End Sub
Additional query words: buglist3.00 3.00 errmsg fixlist4.00
Keywords: kbbug kbfix KB101245