Сложная (?) Формула Excel не может быть записана с VBA в DataBodyRange - PullRequest
0 голосов
/ 21 октября 2019

Через VBA я читаю формулы из таблицы конфигурации, где формулы хранятся в виде текста, и записываю их в другие файлы как реальные формулы. Когда такая формула = '= 1 + 1, все будет хорошо, но формула

'=IFNA(INDEX(tblRoute[ROUTE_ID];MATCH(TRUE;INDEX(tblRoute[RouteFuncKey]=[@RouteFuncKey];0);0));">>> Niet aanwezig!") 

приводит к ошибке.

Я помещаю таблицу конфигурации в массив и читаю формулуиз него следует:

strNewFormula = arrTableFieldsWithUpdateAction(6, i)

Я пишу формулу с:

wbkMDRoutingRCGFile.Worksheets(strTableWorksheet).ListObjects(1).ListColumns(strTableField).DataBodyRange.Formula = strNewFormula

Произошла непредвиденная ошибка:

Ошибка времени выполнения '1004': Ошибка приложения или возражения.

1 Ответ

0 голосов
/ 21 октября 2019

Если формула является логически правильной, то это проблема с разделителем аргументов.

Формула

=IFNA(INDEX(tblRoute[ROUTE_ID];MATCH(TRUE;INDEX(tblRoute[RouteFuncKey]=[@RouteFuncKey];0);0));">>> Niet aanwezig!")

через VBA должна быть

=IFNA(INDEX(tblRoute[ROUTE_ID],MATCH(TRUE,INDEX(tblRoute[RouteFuncKey]=[@RouteFuncKey],0),0)),">>> Niet aanwezig!")

т.е. все точки с запятой должны быть заменены запятыми!

...