虽然公式正确

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

'1004':应用程序定义或对象定义的错误。

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))" 

生成的(首先在循环中)string是:

 =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代码中打印出testing公式,然后将其复制到面板上。 这样我就可以确定生成的string实际上是正确的。 根据我所了解的,VBA中有一些保护措施可以确保当我尝试编写一个公式时,这个公式是正确的,而且是正确的。 在这种保护中可能有些东西让我无法将公式写入单元格。

有没有什么解决scheme可以将所需的公式写入使用VBA的单元格?

我敢打赌,因为这是一个数组公式,你应该使用FormulaArray属性。

 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方法,因为这已经解决了我的问题。