2010-06-11 2 views
3

Я работаю над приложением Excel VSTO и найти ячейки ошибок в рабочих листах, используя приведенный ниже кодОбработка «Никаких ячеек не найдено». Ошибка в Excel

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."}** 

Как справиться с этим ... Pls помочь

ответ

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 
} 
+1

да я делаю это сейчас так ... но хотелось бы знать, есть ли проверка того, что я могу сделать, прежде чем линия rngErrorRange = rngTemp.SpecialCells (Excel.XlCellType.xlCellTypeFormulas, Excel.XlSpecialCellsValue.xlErrors); – Sathish

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

Тогда вам придется объяснить нулевой, но он не выдаст ошибку.

Смежные вопросы