在VBA中应用公式?
我试图应用一个公式,在单元格中写入YES或NO,检查另一个单元格是否以Q)文本开头。
手动在Excel中写入正在工作。
=IF(LEFT(A2;2)="Q)";"YES";"NO")
但是当我尝试在一个macros内自动执行
Range("R2").Formula = "=IF(LEFT(A2;2)=""Q)"";""YES"";""NO"")"
运行时错误“1004”:应用程序定义或对象定义的错误
另外,我想要为整个专栏做这个,就像这样
Range("R2:R" & lastRow).Formula = "=IF(LEFT(A2;2)=""Q)"";""YES"";""NO"")"
但是为此我必须先解决第一个问题。
我究竟做错了什么?
无论您的本地设置如何,VBA都使用逗号分隔符
Range("R2:R" & lastRow).Formula = "=IF(LEFT(A2,2)=""Q)"",""YES"",""NO"")"
您可以随时尝试录制macros选项:1.开始录制2.将公式粘贴到单元格中3.停止录制4.查看录制的macros以及如何格式化公式
一般来说,请尝试以下操作:
-
在Excel中制作一个可行的公式
-
然后select具有可用公式的单元格
-
运行代码
-
在即时窗口中应该打印一些有用的东西。
代码 :
Public Sub PrintMeUsefulFormula() Dim strFormula As String Dim strParenth As String strParenth = """" strFormula = Selection.Formula strFormula = Replace(strFormula, """", """""") strFormula = strParenth & strFormula & strParenth Debug.Print strFormula End Sub
来源: 与IF / OR在VBA中的错误
Range.Formula
期待EN-US语法。
使用Range.FormulaLocal
根据您的区域设置插入一个公式:
Range("R2").FormulaLocal = "=IF(LEFT(A2;2)=""Q)"";""YES"";""NO"")"
而不是双重双引号。 尝试跳过双引号。
例如:而不是“”Q“”试试“Q”