Код чужого кода в проекте, который я пытаюсь исправить.Невозможно назначить формулу для диапазона ячеек в Excel
listO.Range(i, j).FormulaR1C1 = FormulaMatrix(i, j)
где FormulaMatrix(i, j)
всегда является значение String
. Независимо от случайного/тестового значения, которое я пытаюсь использовать, оно назначается успешно, за исключением случаев, когда оно является формулой, например.
=IF(LENGTH([@Units])>0;[@SalesAmount]-[@DiscountAmount]0)
Если удалить =
знак в начале формулы, он получает назначение правильно, но это бесполезно, потому что это не формула.
@Units
, @SalesAmount
, @DiscountAmount
- это ссылки/названия столбцов.
Таким образом, при назначении формулы я получаю исключение HRESULT: 0x800A03EC
. Я искал in this answer, чтобы получить объяснения и выполнил некоторые из инструкций. Я решил, что моя проблема заключается в следующем: проблема возникает из-за функции, введенной в ячейку, и пытается обновить другую ячейку.
Проверено также this post. Я пробовал совсем другое (например, положить только формулы без =
, а затем снова пробежать и поставить равные знаки), но такая же проблема.
Я не знаю, как подойти к этому.
Где это другая функция? Что он делает, и какую ячейку он пытается обновить? – nwhaught
Это Excel Interop? попробуйте прямо передать формулу как строку с .Value или .FormulaLocal вместо .FormulaR1C1. Если я правильно помню, что вещь R1C1 никогда не работала для меня. – Jaxedin
Кроме того, формула в вашем вопросе недействительна ... вы имеете в виду '= IF (LEN ([@ Units])> 0, [@ SalesAmount] - [@ DiscountAmount], 0)'? – nwhaught