Sam Stone написал(а):
Добрый день.
Почему-то не выгружется формула в ячейку по метке.
Есть таблица с полями А (число), Б (текст), В (формула). Выгружается соответственно в метки [А], [Б] и [В]. Так вот, первые две метки заполняются, а третья остается неизменной ([В]). Если поставить ' перед формулой, то текст выгружается. Формула вида =ЕСЛИ(ЕОШИБКА('ЛИСТ'!$A$1);0;'ЛИСТ'!$A$1).
По-моему это очередной косяк Excel.
Я вручную попробовал в Excel заменить значение в ячейке на формулу и записал макрос:
Code:
Sub Макрос1()
'
' Макрос1 Макрос
' Макрос записан 01.03.2019 (VVN)
'
'
Cells.Replace What:="[3]", Replacement:="=СУММ(2;3)", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
End Sub
Но при попытке выполнить макрос значение не заменится. Но если его изменить на английский вариант формулы, тогда сработает:
Code:
Sub Макрос1()
'
' Макрос1 Макрос
' Макрос записан 01.03.2019 (VVN)
'
'
Cells.Replace What:="[3]", Replacement:="=SUM(2,3)", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
End Sub
Однако это ещё не все нюансы. Если VBA-функцию Replace выполнять через OLE, то таки нужно использовать русское начертание формул типа "=СУММ(2;3)". Соответственно, для ZWWW это означает, что если вывод данных оптимизируется через VBA-макрос (принудительно OPTIMIZE=0), то формулы нужно писать на английском; а если через OLE (принудительно OPTIMIZE=9999999), то на русском. В общем дурдом какой-то. Слава БГ!

За сим не рекомендую таким образом заполнять формулы, лучше их заранее вбивать в шаблоны.