【发布时间】:2015-04-27 12:57:12
【问题描述】:
项目中其他人的代码,我正在尝试修复。
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. 我尝试了完全不同的方法(比如只输入没有= 的公式,然后再次运行并输入等号),但同样的问题。
我不知道如何处理这个问题。
【问题讨论】:
-
这个其他功能在哪里?它在做什么,它试图更新哪个单元格?
-
那是 Excel 互操作吗?尝试使用 .Value 或 .FormulaLocal 而不是 .FormulaR1C1 直接将公式作为字符串传递。如果我没记错的话,R1C1 对我来说从来没有用过。
-
另外,您问题中的公式无效...您的意思是
=IF(LEN([@Units])>0,[@SalesAmount]-[@DiscountAmount],0)? -
@nwhaught ,公式很好。如果,当我已经在 Excel 中时,选择某个单元格并手动插入此公式 - 它可以工作。 :)
-
@nwhaught ,我也尝试了你建议的公式,但我仍然得到异常......
标签: vb.net excel excel-formula interop excel-2010