使用VBA在循环中input带有引号的Excel公式

我正尝试使用VBA在Excel中插入一个公式,在Excel中看起来如下所示:

=BDH(C2,"PX LAST",F2,"","Dir=H","days=w","DTS=H","cols=1;rows=1") 

这实际上只是这个公式的第一行,我想要被复制到某一列。 因此,我必须使用索引为i的循环,然后使用单元格符号(即C2=Cells(i,3)F2=Cells(i,6)引用适当的单元格。 在浏览本网站和其他人的讨论之后,我知道为了在string中创build一个字面引号,可以使用双引号( "" )。

 formulaString = "=BDH(Cells" & CStr(i) & ",3),""PX LAST"",Cells(" & CStr(i) & ",6),"""",""Dir=H"",""days=w"",""DTS=H"",""cols=1;rows=1"")" 

我想插入这些公式在相应行的第8列,所以我这样做

 Cells(i,8).Formula = formulaString 

但是,当我这样做时,我得到错误“应用程序定义或对象定义的错误”。 我也看到,这可以类似的代码

 Cells(i,8).Value = Evaluate(formulaString) 

这不会抛出一个错误,但是当它运行我希望公式读取#Value

有人能帮我确定我在做什么错吗?

您不应该将公式string中的Cells ,您应该使用Address属性:

 formulaString = "=BDH(" & Cells(i,3).Address(False, False) & ",""PX LAST""," & Cells(i,6).Address(False, False) & ","""",""Dir=H"",""days=w"",""DTS=H"",""cols=1;rows=1"")" 

然而你真正想要的是切换到R1C1表示法 :

 formulaStringR1C1 = "=BDH(RC3,""PX LAST"",RC6,"""",""Dir=H"",""days=w"",""DTS=H"",""cols=1;rows=1"")" 

然后使用

 Cells(i,8).FormulaR1C1 = formulaStringR1C1