【发布时间】:2019-09-27 00:53:20
【问题描述】:
我收到运行时错误 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 的情况下输入公式时,它可以工作。
【问题讨论】:
-
您是否尝试过用 A1 表示法替换 R1C1 表示法,看看效果如何?
-
我试过了。我将其更改为“C$8:C8”,但它仍然不起作用。当我这样做并 debug.print 时,它会将 R8C:RC 放回其中。
-
如果你写一个数组公式到整个列我不认为行号会更新,我认为你必须在写入第一个单元格后填写。
-
我这样做了,它工作正常。 ` ThisWorkbook.Worksheets("Ledger").Cells(8, LedgerAccountCell + _ 9).Select Selection.FormulaArray = Trans_ID `
-
这会引发错误吗:
Worksheets("Ledger").ListObjects(NewTableName.Name).ListColumns( _ "Trans ID").DataBodyRange.Cells(1).FormulaArray = Trans_ID?