2015-07-21 96 views
1

我试图执行在Excel/VBA下面的代码:为什么VBA粘贴某个公式时会出错,但粘贴其他公式时不会出现错误?

Worksheets("Portfolio").Range("D54") = "=COUNTA($F$6:$F$51)" 
Worksheets("Portfolio").Range("D55") = "=COUNTA($E$6:$E$51)" 
Worksheets("Portfolio").Range("M52") = "=SUM($M$6:$M$51)" 
Worksheets("Portfolio").Range("L52") = "=SUMPRODUCT($I$6:$I$51;$L$6:$L$51)/SUM($I$6:$I$51)" 

完成后,三个第一批执行不如预期,但最后一个给出了错误“应用程序定义或对象定义的错误“

我不明白这是为什么。当手动输入时,公式工作正常,即使不是,它也不应该破坏代码,对吧?

我试图解决它通过分解线,将公式分配给变量,测试它是否工作,如果另一个公式被替换(它),并重新排序。没什么帮助。

+0

类型想手动入公式你的Excel版本 - 它是如何格式化的?请注意,您使用上述分号,但取决于Excel的语言设置,它可能需要逗号代替。看看它在公式栏中输入时的格式。 –

+0

@ Grade'Eh'Bacon谢谢你的建议。当手动输入时,公式的工作方式与预期相同。 – Viele

+1

宏记录你自己的公式,然后你可以发布该代码? – 99moorem

回答

1
而不是用冒号

分号

"=SUMPRODUCT($I$6:$I$51;$L$6:$L$51)/SUM($I$6:$I$51)" 

固定结肠

"=SUMPRODUCT($I$6:$I$51:$L$6:$L$51)/SUM($I$6:$I$51)" 

以下后看到下面进一步的调查是正确的公式

"=SUMPRODUCT(R6C9:R51C9,R6C12:R51C12)/SUM(R6C9:R51C9)" 
+0

有趣的是,这解决了执行问题。但是,它使公式不正确。据我所知,SUMPRODUCT公式编写正确。 – Viele

+1

我相信分号可能是逗号,而不是冒号;我不相信你可以在sumproduct公式中的多个范围内使用冒号。 –

+0

@ Grade'Eh'Bacon我尝试用逗号代替手动函数,并且破坏了它。它应该是一个分号。 – Viele