2013-09-23 116 views
0

我有以下函數= AND(EXACT(B3; F3); EXACT(F3; J3)),它返回TRUE或FALSE。 我想創建一個單元格規則,用於將假的和綠色的真實值着色爲紅色。 試圖使用下面的代碼,但不工作,我做錯了什麼?高亮顯示單元格規則文本包含

Excel.FormatConditions fcs = xlWorkSheet.Cells[i,"M"].FormatConditions; 
        Excel.FormatCondition fc = (Excel.FormatCondition)fcs.Add(Excel.XlFormatConditionType.xlTextString, Excel.XlFormatConditionOperator.xlEqual, "TRUE"); 
        Excel.Interior interior = fc.Interior; 
        interior.Color = ColorTranslator.ToOle(Color.LightGreen); 
        Excel.Font font = fc.Font; 
        font.Color = ColorTranslator.ToOle(Color.ForestGreen); 
        fc = (Excel.FormatCondition)fcs.Add(Excel.XlFormatConditionType.xlTextString, Excel.XlFormatConditionOperator.xlEqual, "FALSE"); 
        interior.Color = ColorTranslator.ToOle(Color.LightSalmon); 
        font.Color = ColorTranslator.ToOle(Color.Red); 
+0

允許@ chewmewaba4寫他/她想要的。 – varocarbas

回答

0

您沒有將顏色與給定規則(但與變量與條件格式不相關)關聯。你也應該更好地依靠xlCellValue。此代碼提供了你所追求的:

Excel.FormatCondition fc = (Excel.FormatCondition)fcs.Add(Excel.XlFormatConditionType.xlCellValue, Excel.XlFormatConditionOperator.xlEqual, "TRUE", Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing); 
fc.Interior.Color = ColorTranslator.ToOle(Color.LightGreen); 
fc.Font.Color = ColorTranslator.ToOle(Color.ForestGreen); 

fc = (Excel.FormatCondition)fcs.Add(Excel.XlFormatConditionType.xlCellValue, Excel.XlFormatConditionOperator.xlEqual, "FALSE", Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing); 
fc.Interior.Color = ColorTranslator.ToOle(Color.LightSalmon); 
fc.Font.Color = ColorTranslator.ToOle(Color.Red); 
+0

感謝您的解決方案,但使用條件後它不能保存xls xlWorkBook.SaveAs(Environment.CurrentDirectory +「\\ Update_Report.xls」,Excel.XlFileFormat.xlWorkbookNormal,misValue,misValue,misValue,misValue,Excel.XlSaveAsAccessMode .xlExclusive,misValue,misValue,misValue,misValue,misValue); 猜測它的問題舊格式 – szabieable

+0

@SzabolcsSzrenko我打開一個xls文件,寫我的代碼和保存()這個文件,我沒有任何問題。請記住,您問過爲什麼您的格式無法正常工作,現在這個工作正在進行中。如果您想查詢更多問題(關於Excel自動化或其他),您應該發佈一個新問題。我不介意幫助你一點,但從你所說的話看來,你需要的不僅僅是一些孤立的提示。我寫的代碼在給定範圍之外沒有任何影響(Cells [i,「M」])。你可能必須適應你的具體情況,但沒有別的。 – varocarbas

+0

是的,你說得對。對不起,質量問題和感謝您的幫助! – szabieable

0

(道歉張貼此作爲一個答案,但我沒有足夠的代表處添加評論還) 你有行:

Excel.FormatCondition fc = (Excel.FormatCondition)fcs.Add(Excel.XlFormatConditionType.xlTextString, Excel.XlFormatConditionOperator.xlEqual, "TRUE"); 

而你的第三個參數「TRUE」通常代表公式。如果你想這個工作,你需要將它改爲「= TRUE」。同樣,你有「FALSE」,應該更新爲「= FALSE」。

您還需要在上面包含@varocarbas建議。

+0

你現在可以嘗試寫你的評論(我認爲你可以發表評論,在有人寫了一些東西后)。他不需要寫「= True」。他的代碼之所以不起作用,是因爲我解釋的原因:他並沒有將顏色與條件聯繫起來(只對外部變量),因此不會發生顏色修改。而且他依賴於一個XlFormatConditionType,它至少在我的計算機上觸發一個錯誤(邏輯的是xlCellValue)。請通過評論(你現在可以)寫下你想要的任何內容,如果你認爲不應該在這裏,請刪除這個答案。 – varocarbas

相關問題