在获取两个单元格之间的范围时遇到困难

本文关键字:范围 遇到 之间 单元格 获取 两个 | 更新日期: 2023-09-27 17:58:07

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

我正在使用以下功能:

    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;
    }

其中我声明了interop:

using Excel = Microsoft.Office.Interop.Excel;

问题是,当执行分配fullRange值的语句时,我得到这个例外:

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

CCD_ 2和CCD_;我不应该根据它的起始单元格和结束单元格来获得一个范围吗?

在获取两个单元格之间的范围时遇到困难

作为评论的后续内容,您应该更改

dataSheet.Cells[beginRange,endRange];

dataSheet.Range[beginRange,endRange];

此外,fullRange.HasFormula应该循环遍历每个单元格,并检查中的任何是否有公式(因为在原始代码中,它会检查范围内的所有单元格是否都有公式,而且在同时有公式和没有公式的单元格的情况下,fullRange.HasFormula会抛出异常)。所以,工作代码是:

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;
}