不能让这个公式工作,虽然顶部和底部的代码工作正常

时间:2014-07-16 15:50:25

标签: vb.net excel vba

我在这个网站上搜索过,但无法找到问题的答案。我正在使用VB 2010 Express。我试图将公式写入Excel电子表格。

oWorkSheet = oBook.Sheets(STRName)
'my variables are all declared strings

'this section works

FMLAValue1 = "=-L8"
FMLAValue2 = "=SUM($I$7;$F$8:$H$8)"
FMLAValue3 = "=SUM(M8:U8)"

oWorkSheet.Range("H8").Select()
oWorkSheet.Range("H8").Formula = FMLAValue1
oWorkSheet.Range("H8").AutoFill (oWorkSheet.Range("H8:H40"))

'up to here

'now this is the problem code below: if I paste the formula into a
'excel sheet cell, it works.

oWorkSheet.Range("I8").Select()
oWorkSheet.Range("I8").Formula = FMLAValue2

'**the line above gives an "Exception from HRESULT: 0x800A03EC "**

oWorkSheet.Range("I8").AutoFill (oWorkSheet.Range("I8:I40"))

'this part also works

oWorkSheet.Range("L8").Select()
oWorkSheet.Range("L8").Formula = FMLAValue3
oWorkSheet.Range("L8").AutoFill (oWorkSheet.Range("L8:L40"))

oWorkSheet.Range("J7").Select()
oWorkSheet.Range("J7").Formula = "=I7"

2 个答案:

答案 0 :(得分:0)

存储在FMLAValue2变量中的公式看起来不正确,您不应该使用;(分号)来分隔数字,您应该使用{ {1}}(逗号)。

请改用:

,

你希望没问题,除非我还没有注意到其他问题。

答案 1 :(得分:0)

要测试公式是否正确,请使用FormulaDesk。它会立即告诉您是否有错误,并确切地指出它在您的公式中的确切位置。然后,您可以将公式粘贴到VBA代码中,因为它知道它可以正常工作。

下图显示了如何准确查明错误在公式中的位置。因此,在您的情况下,将非工作错误粘贴到Excel中的单元格中,然后在FormulaDesk中查看错误报告以找出确切原因。

[披露:我是FormulaDesk的作者。我认为这肯定有助于海报发现任何错误]

enter image description here