处理“没有发现细胞”。 Excel中出错

时间:2010-06-11 10:58:55

标签: c#

我正在使用Excel VSTO应用程序并使用以下代码

在工作表中查找错误单元格
Excel.Range rngTemp;
Excel.Range rngErrorRange;

Excel._Worksheet Sheet1 = (Excel._Worksheet)xlCTA.Sheets["Sheet1"];
rngTemp = wsCTAWK11.UsedRange;
rngErrorRange = rngTemp.SpecialCells(Excel.XlCellType.xlCellTypeFormulas, Excel.XlSpecialCellsValue.xlErrors);

当发现真正的错误单元格时,我没有任何问题,但是当我在这些表格中没有任何错误单元格时,我得到以下异常

**threw an exception of type 'System.Runtime.InteropServices.COMException'
    base {System.Runtime.InteropServices.ExternalException}: {"No cells were found."}**

如何处理...请帮忙

3 个答案:

答案 0 :(得分:1)

抓住异常并按照您的意愿处理它?<​​/ p>

答案 1 :(得分:1)

try
{
    Excel.Range rngTemp;
    Excel.Range rngErrorRange;

    Excel._Worksheet Sheet1 = (Excel._Worksheet)xlCTA.Sheets["Sheet1"];
    rngTemp = wsCTAWK11.UsedRange;
    rngErrorRange = rngTemp.SpecialCells(Excel.XlCellType.xlCellTypeFormulas,
Excel.XlSpecialCellsValue.xlErrors);
}
catch (System.Runtime.InteropServices.COMException ex)
{
    //Handle here
}

答案 2 :(得分:0)

使用内置的SpecialCells方法编写自己的扩展方法,而不是使用错误处理来包装对myRange.SpecialCells的调用。

我做了以下事情:

 public static Range SpecialCellsCatchError(this Range myRange, XlCellType cellType)
    {
        try
        {
            return myRange.SpecialCells(cellType);
        }
        catch (System.Runtime.InteropServices.COMException ex)
        {
            return null;
        }
    }

然后你必须考虑null,但不会抛出错误。