我在具有 Bloomberg 许可证的 PC 上的空白 Excel 2007 工作簿中运行宏。该宏将 Bloomberg 函数插入到 sheet1 中以提取收益率曲线数据。一些附加函数的结果取决于完成并正确显示 Bberg 数据的第一个函数。当我单步执行程序时,它只显示 '#N/A Requesting Data 。. 。而不是查询的结果,无论我走多慢。由于某些函数依赖于填充的字符串和数字字段结果,因此程序会在该代码处遇到运行时错误。当我停止调试时——完全结束运行程序——所有应该填充的 Bberg 值都会出现。我希望这些值在程序仍在运行时出现。
我尝试使用 DoEvents 和 Application.OnTime() 的组合将控制权返回给操作系统并让程序等待很长时间以等待数据更新,但都没有奏效。任何想法都会有所帮助。我的代码如下。 wb是全局级别的工作簿,ws1是全局级别的工作表。
Public Sub Run_Me()
'Application.DisplayAlerts = False
'Application.ScreenUpdating = False
Call Populate_Me
Call Format_Me
'Application.DisplayAlerts = True
'Application.ScreenUpdating = True
End Sub
Private Sub Populate_Me()
Dim lRow_PM As Integer
Dim xlCalc As XlCalculation
Set wb = ThisWorkbook
Set ws1 = wb.Sheets(1)
'clear out any values from previous day
If wb.Sheets(ws1.Name).Range("A1").Value <> "" Then
wb.Sheets(ws1.Name).Select
Selection.ClearContents
End If
xlCalc = Application.Calculation
Application.Calculation = xlCalculationAutomatic
Range("A1").Value = "F5"
Range("B1").Value = "Term"
Range("C1").Value = "PX LAST"
Range("A2").Select
ActiveCell.FormulaR1C1 = "=BDS(""YCCF0005 Index"",""CURVE_MEMBERS"",""cols=1;rows=15"")"
BloombergUI.RefreshAllStaticData
Range("B2").Select
ActiveCell.FormulaR1C1 = "=BDS(""YCCF0005 Index"",""CURVE_TERMS"",""cols=1;rows=15"")"
BloombergUI.RefreshAllStaticData
Application.OnTime Now + TimeValue("00:00:10"), "HardCode"
'******more code*******'
End Sub
Sub HardCode()
Range("C2").Select
ActiveCell.FormulaR1C1 = "=BDP($A2,C$1)"
BloombergUI.RefreshAllStaticData
End Sub