2017-02-06 10 views
0

いずれかのセルに条件付き書式がtrueの場合、Excelワークシートをチェックしたいと考えています。私は、さまざまな色のセルをフォーマットする複数のフォーマットを持っていますが、条件のいずれかが真であるかどうかを確認できるようにしたいのです(条件を気にしないでください)。この例は機能していませんが、私が正しい道を歩いているのか、私が求めていることをすることさえできるのかを知りたいのです。条件付き書式が真であるすべてのセルを選択できますか?

var lastCell = Globals.ThisAddIn.Application.ActiveCell.SpecialCells(XlCellType.xlCellTypeLastCell, Type.Missing); 
var firstCell = ((Worksheet)Globals.ThisAddIn.Application.ActiveSheet).Cells[2,1]; 
var range = ((Worksheet)Globals.ThisAddIn.Application.ActiveSheet).Range[firstCell, lastCell] 
var r = range.SpecialCells(XlCellType.xlCellTypeAllFormatConditions, true); 
+0

セルをループし、条件に一致する場合はリストに追加しますか?可能であればlinqを使用する – EpicKip

答えて

0

範囲のFormatConditionsコレクションは全範囲に適用されるように、私は、範囲内の各セルの値を決定するためのメカニズムがあります信じていません。あなたの最善の賭けは、興味のある細胞のFormulaをテストすることだと思います。 これはあなたが聞きたかったものではないと確信しています

this answerを使用してください。もちろん、xlWorkSheet((Worksheet)Globals.ThisAddIn.Application.ActiveSheet)に置き換えてください。

その後、あなたはrangeに設定すると仮定すると、範囲をループ...

for (int r = 1; r <= range.Rows.Count; r++) 
{ 
    for (int c = 1; c <= range.Columns.Count; c++) 
    { 

... 序文(のようなもので、一時的に式/値を置き換える:私はほとんど、このコードがないことを保証仕事)...

 string formula = range[r, c].Formula; //or Value, check HasFormula 
     for (int i = 1; i <= range.FormatConditions.Count; i++) 
     { 
      range[r, c].Formula = range.FormatConditions[i].Formula1; // or Formula2 (?) 
     } 
     bool condition = range[r, c].Value; 
     // do work based on the condition 

     range[r, c].Formula = formula; 

...とループを閉じます。

} 
} 
関連する問題