我有下面的一段代码,我用这个函数计算下面函数中的一些参数。
Function MyLookup(var1 As Variant, range1 As Range, var2 As Integer) As Double
MyLookup = Application.WorksheetFunction.VLookup(var1, range1, var2, False)
End Function
我用这个函数来计算下面函数中的一些参数。
Function Test(IntMethod As String, CFDate As Date, ValDate As Date, _
CF As Double, RepFreq As Integer, DiscToDate As String, _
DiscType As String) As Double
Dim InterpPeriod As Double, PrevDateRate As Double, _
CurrDateRate As Double, PrevCurvMat As Integer, _
CurrCurvMat As Integer, rate As Double
Dim Yield_Curves As Range, PrevValDate As Date
Set Yield_Curves = DISC_CFS.Range("Yield_Curves")
PrevValDate = Last_Period(ValDate, CFDate, RepFreq)
'-----------------------------------------------------
InterpPeriod = Application.WorksheetFunction.YearFrac(CFDate, ValDate, 1)
PrevCurvMat = YearsDiff(ValDate, CFDate)
CurrCurvMat = YearsDiff(ValDate, CFDate) + 1
PrevDateRate = MyLookup(PrevValDate, Yield_Curves, 2)
CurrDateRate = MyLookup(ValDate, Yield_Curves, 2)
当我进入MyLookup功能,范围不被识别,它退出了功能.任何提示?
先谢谢你
我终于解决了这个问题。错误出在我的一个查找变量上,它是一个日期。日期应该被转换为长类型。
正确的代码如下。
Function MyLookup(var1 As Variant, range1 As Range, var2 As Integer) As Double
MyLookup = Application.WorksheetFunction.VLookup(var1, range1, var2, False)
End Function
主代码是:
Function Test(IntMethod As String, CFDate As Date, ValDate As Date, _
CF As Double, RepFreq As Integer, DiscToDate As String, _
DiscType As String) As Double
Dim InterpPeriod As Double, PrevDateRate As Double, _
CurrDateRate As Double, PrevCurvMat As Integer, _
CurrCurvMat As Integer, rate As Double
Dim Yield_Curves As Range, PrevValDate As Date
Set Yield_Curves = DISC_CFS.Range("Yield_Curves")
PrevValDate = Last_Period(ValDate, CFDate, RepFreq)
'-----------------------------------------------------
InterpPeriod = Application.WorksheetFunction.YearFrac(CFDate, ValDate, 1)
PrevCurvMat = YearsDiff(ValDate, CFDate)
CurrCurvMat = YearsDiff(ValDate, CFDate) + 1
PrevDateRate = MyLookup(CLng(PrevValDate), Yield_Curves, 2)
CurrDateRate = MyLookup(CLng(ValDate), Yield_Curves, 2)
谢谢你的回答和帮助