首页 > 解决方案 > 用于数据提取的 VBA Bloomberg (BDH) 公式

问题描述

我在通过 VBA 代码运行 Bloomberg BDH 公式时遇到问题。

代码中的公式在 Excel 工作表中以公式格式执行时完美运行(在单元格中键入公式)

但是当我将公式放在 VBA 代码中并相应地重新输入时,我得到一个我无法弄清楚的错误。

这是在单元格中执行的公式(如下所示):

=BDH("CNC US Equity","Best_Ask,Best_Bid,Trade","2019-02-06 09:00:00","2019-02-07 22:00:00","Dir=V","IntrRw=true","CondCodes=S","QRM=S","Spread=S","ExchCode=S","Dts=S")

在 VBABDH formula中,通过InputSheetI 引用股票CNC US Equity,例如所需的参数Best_Ask,Best_Bid,Tradedates.

该公式应该粘贴在多个工作表上的多个单元格中,在每个实例中引用不同的equity和不同的date range

这是我遇到问题的地方,代码甚至不会将公式粘贴到单元格中,我已经三次检查了公式中引用的每个值,但一切似乎都是正确的,我什至运行了一个测试 excel 公式Worksheets(Exportsheet1).Cells(1, z).Value = "=SQRT(4)"来查看是否有是代码中的任何问题,但一无所获。

 Dim name1(423) As Variant
 Dim out2(33, 17) As Variant
 Dim A As Variant
 Dim B As Variant
 Dim C As Variant
 Dim B1 As Variant
 Dim B2 As Variant
 Dim x As Integer
 Dim y As Integer
 Dim z As Integer
 Dim t As Integer
 Dim w As Integer


 Const InputSheet = "DATA"
 Const InputRange = "D2:AB424"
 Const nameRange = "C2:C424"
 Const Exportsheet1 = "Tempo1"
 Const Exportsheet2 = "Tempo2"
 Const Exportsheet3 = "Tempo3"
 Const Exportsheet4 = "Tempo4"
 Const Exportrange1 = "A1:AX34"


 Sheets(InputSheet).Activate

 z = 1
 For x = 1 To 100
    For y = 2 To 26
        If IsEmpty(Worksheets(InputSheet).Cells(x, y).Value) = False Then
            'Worksheets(Exportsheet1).Cells(1, z).Value = "=SQRT(4)"
            Worksheets(Exportsheet1).Cells(1, z).Value = "=BDH(WorkSheets(InputSheet).Cells(x, 1).Value;WorkSheets(InputSheet).Cells(424, 1).Value;""""WorkSheets(InputSheet).Cells(x, y).Value - 1)"""";""""WorkSheets(InputSheet).Cells(x, 1).Value"""";""""Dir=V"""";""""IntrRw=true"""";""""CondCodes=S"""";""""QRM=S"""";""""Spread=S"""";""""ExchCode=S"""";""""Dts=S"""")"

            z = z + 1

        End If
    Next y
 Next x


End Sub

标签: excelvbabloomberg

解决方案


推荐阅读