无法获得两个单元格之间的范围

我试图确定是否在给定范围内的任何单元格都有公式。

我正在使用以下function:

public bool noFormulas(Excel.Worksheet dataSheet) { Excel.Range beginRange=dataSheet.Cells[3, beginColumn]; Excel.Range endRange=dataSheet.Cells[lastRow, endColumn]; Excel.Range fullRange = dataSheet.Cells[beginRange,endRange]; return fullRange.HasFormula == false; } 

在那里我已经宣布了互操作:

 using Excel = Microsoft.Office.Interop.Excel; 

问题是当分配fullRange值的fullRange被执行时,我得到这个exception:

 An unhandled exception of type 'System.Runtime.InteropServices.COMException' occurred in mscorlib.dll Additional information: Exception from HRESULT: 0x800A03EC 

beginRangeendRange都被成功填充; 我不能根据其开始和结束单元格来获得范围吗?

作为评论后续,你应该改变

 dataSheet.Cells[beginRange,endRange]; 

 dataSheet.Range[beginRange,endRange]; 

此外,而不是fullRange.HasFormula你应该循环遍历每个单元格,并检查是否有任何公式(因为在您的原始代码中,它检查范围内的所有单元格是否有公式,而且当你有两个公式的单元格的情况下公式, fullRange.HasFormula引发exception)。 所以,工作代码是:

 public bool noFormulas(Excel.Worksheet dataSheet) { Excel.Range beginRange = dataSheet.Cells[3, beginColumn]; Excel.Range endRange = dataSheet.Cells[lastRow, endColumn]; Excel.Range fullRange = dataSheet.Range[beginRange, endRange]; foreach (Excel.Range c in fullRange) { if (c.HasFormula) { return false; } } return true; }