У меня есть следующие подпрограммы закодированы в Access VBA:Применения подпрограммы диапазона дат в Access VBA
Sub SampleReadCurve()
Dim rs As Recordset
Dim iRow As Long, iField As Long
Dim strSQL As String
Dim CurveID As Long
Dim MarkRunID As Long
Dim ZeroCurveID As String
CurveID = 124
MarkRunID = 10167
ZeroCurveID = "'" & CurveID & "-" & MarkRunID & "'"
strSQL = "SELECT * FROM VolatilityOutput WHERE ZeroCurveID=" & ZeroCurveID & " ORDER BY MaturityDate"
Set rs = CurrentDb.OpenRecordset(strSQL, Type:=dbOpenDynaset, Options:=dbSeeChanges)
If rs.RecordCount <> 0 Then
rs.MoveFirst
Debug.Print vbCrLf
Debug.Print "First", rs.Fields("ZeroCurveID"), rs.Fields("MaturityDate"), rs.Fields("ZeroRate"), rs.Fields("DiscountFactor")
rs.MoveLast
Debug.Print "Last", rs.Fields("ZeroCurveID"), rs.Fields("MaturityDate"), rs.Fields("ZeroRate"), rs.Fields("DiscountFactor")
Debug.Print "There are " & rs.RecordCount & " records and " & rs.Fields.Count & " fields."
Dim BucketTermAmt As Long
Dim BucketTermUnit As String
Dim BucketDate As Date
Dim MarkAsOfDate As Date
Dim InterpRate As Double
MarkAsOfDate = #7/31/2015#
BucketTermAmt = 3
BucketTermUnit = "m"
BucketDate = DateAdd(BucketTermUnit, BucketTermAmt, MarkAsOfDate)
InterpRate = CurveInterpolateRecordset(rs, BucketDate)
Debug.Print BucketDate, InterpRate
End If
End Sub
Как это написано прямо сейчас, эта подпрограмма относится к значению MarkAsOfDate указанного, что #-/31/2015 #. Сейчас эта дата жестко закодирована.
Однако я хочу изменить эту функцию так, чтобы она выполняла ту же процедуру для последних 76 дат, а не только одну твердую кодированную дату. Поэтому вместо того, чтобы просто применять к MarkAsOfDate = # 7/31/2015 #, я хочу автоматически запускать его для 7/30/2015, 7/29/2015, 7/28/2015 и т. Д. За 76 дат, предшествующих указанному. Прямо сейчас, единственный способ сделать это - вручную изменить строку MarkAsofDate и запустить ее 76 раз для каждой даты.
Как я могу изменить эту функцию так, чтобы она применима к указанному значению MarkAsOfDate и 76 датам, предшествующим ему?
Отлично, это фантастическое решение, спасибо – beeba