Vba 虽然公式是正确的,但在单元格中写入公式会出错

Vba 虽然公式是正确的,但在单元格中写入公式会出错,vba,excel,Vba,Excel,我正在使用VBA在MS Excel工作表中编写公式。当我手动将公式复制到单元格时,它可以工作,但当我使用下面的行时,它会给我一个运行时错误: “1004”:应用程序定义或对象定义错误 生成的(循环中的第一个)字符串为: =SUMPRODUCT(--(OFFSET(endResourceNaam;2;0):OFFSET(endResourceNaam;1000;0)=$A6);--(OFFSET(endResourceNaam;2;4):OFFSET(endResourceNaam;1000;4)

我正在使用VBA在MS Excel工作表中编写公式。当我手动将公式复制到单元格时,它可以工作,但当我使用下面的行时,它会给我一个运行时错误:

“1004”:应用程序定义或对象定义错误

生成的(循环中的第一个)字符串为:

=SUMPRODUCT(--(OFFSET(endResourceNaam;2;0):OFFSET(endResourceNaam;1000;0)=$A6);--(OFFSET(endResourceNaam;2;4):OFFSET(endResourceNaam;1000;4)=$E6);OFFSET(endResourceWeek;2;O$1):OFFSET(endResourceWeek;1000;O$1))
我通过从VBA代码打印公式,然后将其复制到单元格中来测试公式。这样我就可以确定生成的字符串实际上是正确的。据我所知,VBA中内置了某种保护,确保在我尝试编写公式时,公式是正确且有效的。这种保护可能会阻止我将公式写入细胞


是否有任何解决方案可供我使用VBA将所需公式写入单元格?

我打赌,因为它是数组公式,所以您应该使用该属性

ActiveSheet.Cells(Row + 3, Column + i).FormulaArray = 

Jeeped对我的问题给出了正确的答案,用EN-US逗号替换分号列表分隔符。以下内容实际上可以正常工作:

ActiveSheet.Cells(Row + 3, Column + i).Formula = "=SUMPRODUCT(--(OFFSET(endResourceNaam,2,0):OFFSET(endResourceNaam,1000,0)=$A" & Row + 1 & "),--(OFFSET(endResourceNaam,2,4):OFFSET(endResourceNaam,1000,4)=$E" & Row + 1 & "),OFFSET(endResourceWeek,2," & ColumnLetter(Column - 1) & "$1):OFFSET(endResourceWeek,1000," & ColumnLetter(Column - 1) & "$1))"

我没有尝试过FormulaArray方法,因为这已经解决了我的问题

在我的初始帖子中更新了它,运行时错误1004。它通常是在公式出现问题时生成的。例如ActiveSheet.Cells(1,2).Formula=“=2+(3*4)”将生成相同的错误,因为缺少一个final)。我看到FormulaArray与R1C1样式的单元格命名一起工作,明天我将尝试一下。()使用逗号。我知道您的系统使用分号列表分隔符,但VBA在将公式放入单元格时需要EN-US逗号<代码>如果使用此属性输入数组公式,则公式必须使用R1C1引用样式,而不是A1引用样式(请参见第二个示例)。
ActiveSheet.Cells(Row + 3, Column + i).Formula = "=SUMPRODUCT(--(OFFSET(endResourceNaam,2,0):OFFSET(endResourceNaam,1000,0)=$A" & Row + 1 & "),--(OFFSET(endResourceNaam,2,4):OFFSET(endResourceNaam,1000,4)=$E" & Row + 1 & "),OFFSET(endResourceWeek,2," & ColumnLetter(Column - 1) & "$1):OFFSET(endResourceWeek,1000," & ColumnLetter(Column - 1) & "$1))"