Excel VBA 1004错误公式

Excel VBA 1004错误公式,vba,excel,excel-formula,runtime,Vba,Excel,Excel Formula,Runtime,我已经在VBA工作了大约一个月了,我觉得我对这门语言掌握得不错。不幸的是,这就是为什么这个错误如此令人沮丧 我试图给一个单元格分配一个公式,我没有使用UK风格的分隔符(逗号,而不是分号)。我仍然得到运行时错误 实际公式的语法很好,因为我已经尝试在Excel中使用它,它做了我需要的事情,所以我必须假设错误在我的VBA语法中,如下所示: With DecileChooser Range("A1").CurrentRegion.PasteSpecial Range("I1")

我已经在VBA工作了大约一个月了,我觉得我对这门语言掌握得不错。不幸的是,这就是为什么这个错误如此令人沮丧

我试图给一个单元格分配一个公式,我没有使用UK风格的分隔符(逗号,而不是分号)。我仍然得到运行时错误

实际公式的语法很好,因为我已经尝试在Excel中使用它,它做了我需要的事情,所以我必须假设错误在我的VBA语法中,如下所示:

    With DecileChooser
    Range("A1").CurrentRegion.PasteSpecial

    Range("I1").Value = CurrentPD
    Range("I2").Value = CompanyDomain


    DecileChooser.Range("J2").Formula = "=IF($I$1 > D2, G2, "")"

    Range("J2:J11").FillDown

    Range("K1").FormulaLocal = "=max(J1:J11)"

    Range("K1").Value = DecileValue
End With  

这不是整个子例程,只是操作部分。

在双引号上加倍:

DecileChooser.Range("J2").Formula = "=IF($I$1 > D2, G2, """")"


这里的问题是代码读取公式中的双引号作为公式的结尾,即它读取的内容是:

DecileChooser.Range("J2").Formula = "=IF($I$1 > D2, G2, "
但是,剩下的“)会出现语法问题。”

您必须使用双引号来表示您没有结束字符串

With DecileChooser
Range("A1").CurrentRegion.PasteSpecial

Range("I1").Value = CurrentPD
Range("I2").Value = CompanyDomain

DecileChooser.Range("J2").Formula = "=IF($I$1 > D2, G2, """")"

Range("J2:J11").FillDown

Range("K1").FormulaLocal = "=max(J1:J11)"

Range("K1").Value = DecileValue
End With 

“=如果($I$1>D2,G2,””)
请阅读-总结是,这不是一种向志愿者讲话的理想方式,可能会对获得答案产生反作用。请不要将此添加到您的问题中。非常感谢。我想我需要比预期更长的时间来适应VBA中的这些怪癖。谢谢!这就是用来引用公式中的空单元格的语法?@Reginald yes,如果VBA正在安装公式
With DecileChooser
Range("A1").CurrentRegion.PasteSpecial

Range("I1").Value = CurrentPD
Range("I2").Value = CompanyDomain

DecileChooser.Range("J2").Formula = "=IF($I$1 > D2, G2, """")"

Range("J2:J11").FillDown

Range("K1").FormulaLocal = "=max(J1:J11)"

Range("K1").Value = DecileValue
End With