use*_*434 5 excel vba bloomberg
我有一个包含约 300,000 个 BDH 公式的 Excel 工作表来下载证券价格。
我想要
但是,我不知道 Excel 何时完成填充 Bloomberg 数据,因此很难确定执行 2) 和 3) 的时间。
我已经写了VBA,但不确定它是否有效:
在Module1
Sub CheckFormulas()
If Application.CalculationState = xlDone Then
With Worksheets("Sheet1").UsedRange
.Value = .Value
End With
Else
Application.OnTime Now + TimeValue("00:30:00"), "CheckFormulas"
ActiveWorkbook.Close Savechanges:=True
End If
End Sub
Run Code Online (Sandbox Code Playgroud)
在“本工作簿”中
Private Sub Run()
Call CheckFormulas
End Sub
Run Code Online (Sandbox Code Playgroud)
所以理论上它的工作方式应该是:
我想知道这是否是实现我的目标的最佳方式,并想知道是否Application.CalculationState与 Bloomberg 公式 BDH 兼容或适用?
在我们的生产环境中,我们使用一个单元格来检查其公式中是否存在带有“Req”的单元格:
=SUM(IFERROR(FIND("Req", _range_to_check_with_formulas_ ),0))
Run Code Online (Sandbox Code Playgroud)
在 VBA Sub 中,我们使用 WHILE 循环测试单元格值:
while cell_to_test.value <> 0
Application.Calculate
Application.RTD.RefreshData
DoEvents
Wend
Call _sub_to_do_some_stuff_
Run Code Online (Sandbox Code Playgroud)