Ошибка времени выполнения: невозможно установить свойство FormulaArray класса Range - PullRequest
0 голосов
/ 26 сентября 2019

Я получаю ошибку времени выполнения 1004: невозможно установить свойство FormulaArray класса Range.Я исследовал эту проблему, но не могу найти решение.Это не более 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 голосов
/ 26 сентября 2019

Относительные ссылки не будут обновляться, если вы попытаетесь записать формулу массива в несколько ячеек.Возможность воспроизвести вашу ошибку, хотя и с гораздо более простой формулой массива.Range.FillDown должно работать, если вы записываете формулу в первую ячейку.

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

Если в таблице уже заданы формулы для автозаполнения, .FillDown является избыточным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...