运行时错误:无法设置范围类的FormulaArray属性

时间:2019-09-26 16:01:55

标签: excel vba

我收到运行时错误1004:无法设置Range类的FormulaArray属性。我一直在研究这个问题,但找不到解决方案。不得超过255个字符。我也尝试将公式放在新的表格列中,所以也许这是问题的一部分。

问题可能出在“ Rows(R8C:RC)”部分吗?我正在尝试使其成为一个相对引用,以便它将引用该公式所在的表吗?

当我“ debug.print Trans_ID”时,我得到了正确的代码,但也许R8C:RC并未更改为正确的单元格引用。

Dim Trans_ID As String

'AccountNumber is equal to 1003

Trans_ID = "=IFERROR(INDEX(Journal,SMALL(IF(L_" & AccountNumber & _
     "=Journal[Acct. '#],Journal[Trans ID],""""),ROWS(R8C:RC)),MATCH(Ledger_" & _
     AccountNumber & "[[#Headers],[Trans ID]],Journal[#Headers],0)),"""")"


Worksheets("Ledger").ListObjects(NewTableName.Name).ListColumns( _
                   "Trans ID").DataBodyRange.FormulaArray = Trans_ID

这将返回一个数字。当我在不使用VBA的情况下输入公式时,它会起作用。

1 个答案:

答案 0 :(得分:0)

如果您尝试将数组公式写入多个单元格,则相对引用不会更新。即使使用更简单的数组公式,也可以重现您的错误。如果您将公式写入第一个单元格,Range.FillDown应该可以使用。

With Worksheets("Ledger").ListObjects(NewTableName.Name).ListColumns("Trans ID").DataBodyRange
    .Cells(1).FormulaArray = Trans_ID
    .FillDown
End With

如果您已将表格中的公式设置为自动填充,则.FillDown是多余的。