【发布时间】:2016-08-05 13:59:18
【问题描述】:
我正在尝试使用彭博公式通过电子表格提取内插国债收益率。单元格 D2 中的日期必须更改,然后在 M4:M2612 中填充未来 10 年中每一天的插值收益率。
电子表格根据电子表格中的表格计算这些插值收益率。
在与 Bloomberg 服务台交谈后,我尝试使用 Application.OnTime 来允许在更改下一个日期之前加载代码。代码在每个日期都在无限循环中运行(仍然没有正确加载产量数据)。我添加了“If Day = EndDate then Exit For”,现在它在循环中包含的前两个日期之间无限循环运行。
它在 Excel 中的调试中没有错误。关于如何提取这些数据的任何建议?
我需要这段代码在 12 年内每天拉取,我使用较小的日期范围对代码进行采样。
Public Sub master()
Call Range("A1:A2609").ClearContents
Call Range("M4:M2612").Select
Call Application.Run("RefreshCurrentSelection")
Call Application.OnTime(Now + TimeValue("00:00:02"), "Master2")
End Sub
Sub Master2()
Dim wb As Workbook
Dim sht1 As Worksheet
Dim sht2 As Worksheet
Dim c As Range
Set wb = ThisWorkbook
Set sht1 = wb.Sheets("Sheet1")
Set sht2 = wb.Sheets("Sheet2")
Dim StartDate As Date
Dim EndDate As Date
Dim Day As Date
StartDate = #4/2/2007#
EndDate = #4/6/2007#
For Day = StartDate To EndDate
MsgBox (Day)
If Day = EndDate then Exit For
sht1.Range("D2").Value = Day
For Each c In Selection.Cells
If c.Value = "#N/A Invalid Parameter:Interpolation Values" Then
Call Application.OnTime(Now + TimeValue("00:00:02"), "Master2")
Exit Sub
End If
Next c
sht2.Range("A1:A2609").Offset(1, 1).Value = sht1.Range("M4:M2612").Value
Next Day
End Sub
【问题讨论】:
-
StartDate = #4/2/2007#是什么?#是做什么的? -
这(2 秒)延迟的两个主机(master、master2)之间的控制转移应该实现什么?
-
# 符号允许您在使用循环时使用日期范围
-
运行 Bloomberg 主动控件时必须有一个“master”子,否则它们的公式无法识别,延迟是让具有静态数据的单元格在复制数据之前更新。
-
我不知道这在这种情况下会导致问题,但我建议不要使用
Day作为变量,因为VBA 中有Day()函数。