虽然公式正确
我正在使用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方法,因为这已经解决了我的问题。
- 如何使用VB.NET中的电子表格灯将一个Excel文件复制到另一个?
- 如何findexcel中的单元格是否合并? 如果单元格激发如何读取值?
- 如何获得在Excel VBA中打开的PowerPoint演示文稿的处理程序
- 在Firefox浏览器中输出dynamic的HTML表格,使其在JavaScript中performance突出
- 如何检测在C#中VSTO加载项的单元格文本更改?
- 将数据从excel传递到具有macros运行时错误13的单词
- PHPExcel图表包括导入文件的输出已损坏
- Apache POI SAXparsing – 如何获取单元格的实际值
- Excel VBA – 循环检查整个列范围而不是每个单元格