2017-01-11 4 views
0

空になっているセル、または特定の数値を含むセルが見つかると、その行全体が色づけされます。ループスルー列で、空のセルが見つかった場合は、行全体をカラー化しますか?

私はこれを試しています)、それは動作しません:

xl.Range end = MySheet.Cells.SpecialCells(xl.XlCellType.xlCellTypeLastCell, Type.Missing); 
xl.Range start = MySheet.get_Range("Q2", end); 

if (start.Value == null) 
{ 
    start.EntireRow.Interior.Color = System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.Red); 
} 

助けや良いアイデアの任意の並べ替えをいただければ幸いです。

+0

このExcel VBAですか? –

+0

セルをループしたい場合、ループIEが必要です:For Each、Forまたはwhileステートメント。 – Sorceri

+0

@ D.O。いいえ、それはC#Interopです - Excel –

答えて

0

UPDATE:これに対する解決策が見つかり

:& foreachのために使用した場合

xl.Range first_range = MySheet.Cells.SpecialCells(xl.XlCellType.xlCellTypeLastCell, Type.Missing); 
     xl.Range usedRange = MySheet.get_Range("Q2", first_range); 
     xl.Range rows = usedRange.Rows; 

int count = 0; 
     foreach (xl.Range row in rows) 
     { 
      if (count > 0) 
      { 
       xl.Range firstcell = row.Cells[1];  
       string firstCellValue = firstcell.Value as string;  
       if (string.IsNullOrEmpty(firstCellValue)) 
       { 
        row.EntireRow.Interior.Color = System.Drawing.Color.Red; 
       } 
      } 
      count++; 
     } 
0

iは

"のOutOfMemory" 例外を取得10000行のような大きなデータでループ

ラムダ式を使用するのが最善の解決策です

//best practice access cell by number not by string 

yourWorksheet.RangeUsed().Rows(r => string.IsNullOrWhiteSpace(r.Cell(1).Value.ToString())) 
         .ForEach(r => r.Style.Fill.SetBackgroundColor(XLColor.Red)); 
関連する問題