Excel VBA 1004错误公式

时间:2017-10-31 17:34:33

标签: vba excel-vba excel-formula runtime excel

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

我正在尝试将一个公式分配给一个单元格,而我并没有使用英国风格的分隔符(所以使用逗号而不是分号)。我仍然收到运行时错误。

实际公式的语法很好,因为我已经尝试在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  

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

2 个答案:

答案 0 :(得分:1)

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

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 

答案 1 :(得分:0)

加倍双引号:

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

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