VBA 如果对象 'range' 在将公式插入单元格时失败,则 '_default' 的错误方法

VBA Error method of '_default' if object 'range' failed when inserting formula into cell

我正在尝试使用 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:$G$" & lrow & ",Classes!B2))"

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

据我所知,这是相同的。

当 Mat 帮助我时,我不小心在 = 前面添加了一个 space 以创建行:

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

那条线很好吗? 当我移至 XL 并取出 space 时,公式按预期工作。这有助于缩小我做错的范围吗?

编辑 2: 这是我做错的地方 - 我在引用另一个 sheet 的那一行之前重新定义了一个变量。当我这样做时,程序显然一直在引用 sheet,并给了我我的问题。当我更改并在单元格 (sheets(blah).cellc(blah) 之前添加 sheet 时,它就起作用了。感谢所有提供帮助的人(尤其是 Mat)。

试试这个

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

我猜 lrow 是一个变量...

Does =SUMPRODUCT(COUNTIF('All Failing Classes'R7C2:r7clrow,Classes!R[]C[-13])) work as a formula?

如果它不起作用(不,它不起作用),那么 Excel 本身无法将损坏的公式分配给您正在输入的单元格 - 出于完全相同的原因,VBA也做不到

所以你的意思是 lrow 在插入公式之前由 VBA 计算,对吗?为此,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]))"