' _default'的VBA错误方法如果对象'范围'将公式插入单元格时失败

时间:2016-12-19 16:57:02

标签: vba insert formula

我正在尝试使用VBA将公式放入单元格中。这就是公式。

   Range(Cells(2, 15)).FormulaR1C1 = "=SUMPRODUCT(COUNTIF('All Failing Classes'R7C2:r7clrow,Classes!R[]C[-13]))"

错误在右边的引号内。我尝试过使用A1表示法,以及我能想到的其他一切。我之前和之后都有几条非常相似的线条,所有工作都很好,所以我不太清楚我错过了什么。谢谢你的帮助。

编辑:以下是几个人建议的行:

 Cells(2, 15).FormulaR1C1 = " =SUMPRODUCT(COUNTIF('All Failing Classes'!$G$2:$G$" & lrow & ",Classes!B2))"

  Cells(2, 15).FormulaR1C1 = "=SUMPRODUCT(COUNTIF('All Failing Classes'R7C2:r7C" & lrow & ",Classes!R[]C[-13]))"

据我所知,这是相同的。

当Mat帮我时,我不小心在=前面添加了一个空格来创建这条线:

 Cells(2, 15).FormulaR1C1 = " =SUMPRODUCT(COUNTIF('All Failing Classes'R7C2:r7C" & lrow & ",Classes!R[]C[-13]))"

并且该行进入正常状态?当我移动到XL并占用空间时,公式按预期工作。这有助于缩小我做错的事情吗?

编辑2:这就是我做错了 - 我在引用另一张纸的那一行之前重新定义了一个变量。当我这样做时,该程序显然仍然引用该表,并给了我我的问题。当我更换并在单元格之前添加工作表(工作表(blah).cellc(blah)然后它工作。感谢所有帮助过的人(特别是Mat)。

2 个答案:

答案 0 :(得分:1)

  

=SUMPRODUCT(COUNTIF('All Failing Classes'R7C2:r7clrow,Classes!R[]C[-13]))是否可以作为公式?

如果它不起作用(不,它没有),那么Excel本身不能将破碎的公式分配给你输入的单元格 - 出于同样的原因,VBA将不会能够做到这一点。

所以你的意思是{V}在被插入公式之前要由lrow进行评估,对吗?为此,VBA需要能够看到lrow变量。作为一个字符串文字,它没有,也无法猜测你的意图:就VBA而言,这就是正在发生的事情:

SomeObject.SomeProperty = "some string literal"

就是这样。

您需要将变量的连接到字符串文字中,这是在VBA中连接字符串的方式:

SomeObject.SomeProperty = "some " & someVariable & " string literal"

换句话说,使赋值的右侧为字符串值表达式,而不仅仅是文字

"=SUMPRODUCT(COUNTIF('All Failing Classes'R7C2:r7c" & lrow & ",Classes!R[]C[-13]))"

答案 1 :(得分:0)

试试这个

Cells(2, 15).FormulaR1C1 = "=SUMPRODUCT(COUNTIF('All Failing Classes'R7C2:r7c" & lrow & ",Classes!R[]C[-13]))"

我猜测lrow是一个变量...