无法在Excel中为单元格区域分配公式

Sys*_*ect 5 vb.net excel interop excel-formula excel-2010

项目中的其他人的代码,我正在努力修复.

listO.Range(i, j).FormulaR1C1 = FormulaMatrix(i, j)

哪里FormulaMatrix(i, j)总是一个String价值.无论随机/测试值是什么,我尝试使用,成功分配,除非它是一个公式,例如.

=IF(LENGTH([@Units])>0;[@SalesAmount]-[@DiscountAmount]0)

如果我删除=公式开头的符号,它会被正确分配,但是它没用,因为它不是公式.

@Units,@SalesAmount,@DiscountAmount是列引用/名称.

因此,在分配公式时,我会得到一个例外HRESULT: 0x800A03EC.我抬头看了这个答案,以便得到解释并遵循那里的一些指示.我确定我的问题如下:问题是由于在单元格中输入的函数而发生的,并且它正在尝试更新另一个单元格.

检查了这篇文章.我尝试了完全不同(比如只放置公式=,然后重新运行并放置等号),但同样的问题.

我对如何处理这个问题一无所知.

Mil*_*iez 1

该错误可能分别来自您当前的数据和工作表的布局。listO.Range(i, j).FormulaR1C1我建议您在分配公式之前检查一下里面的内容。

我遇到过这样的情况,范围内已经有错误的数据,然后奇怪的是,我不知道为什么,我无法分配新的公式。

如果是这种情况 - 尝试清除范围的值,然后分配公式:

listO.Range(i, j).FormulaR1C1 = ""
listO.Range(i, j).FormulaR1C1 = FormulaMatrix(i, j)
Run Code Online (Sandbox Code Playgroud)