我正在尝试使用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)
。在浏览了本网站和其他网站上的一些讨论后,我知道为了在字符串中创建文字引用,您使用双引号(""
)。
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
的单元格时。
有人可以帮我确定一下我做错了吗?
答案 0 :(得分:0)
您不应该将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"")"
但你真正想要的是switching to the R1C1 notation:
formulaStringR1C1 = "=BDH(RC3,""PX LAST"",RC6,"""",""Dir=H"",""days=w"",""DTS=H"",""cols=1;rows=1"")"
然后使用
Cells(i,8).FormulaR1C1 = formulaStringR1C1