2015-02-24 95 views
0

我需要將此準確的條件格式轉換爲c#。將此條件格式轉換爲C#

enter image description here

我嘗試使用下面的代碼。但由於C5不在該範圍內,因此不起作用。

Range extendedRange = activeWorksheet.get_Range("D5", oOpt).get_Resize(129, 3); 
FormatConditions fcs = extendedRange.FormatConditions; 
    FormatCondition fc = (FormatCondition)fcs.Add(XlFormatConditionType.xlCellValue, XlFormatConditionOperator.xlGreater, "=C5", oOpt, oOpt, 
               oOpt, oOpt, oOpt); 

       Interior interior = fc.Interior; 
       interior.Color = ColorTranslator.ToOle(Color.Red); 

我使用的是interop.excel 12.0.0.0。有人能幫我解決這個問題嗎?在此先感謝

編輯: 我希望這是一個實實在在的參考。所以,excel條件格式中顯示的內容正是我想要的。但是,當我試着用我的代碼公式更改爲D5而不是C5。我認爲這可能是因爲我的射程沒有C5單元格。我正在使用Visual Studio 2008 SP1。

回答

1

你的代碼適合我。它給你一個錯誤信息?

可能的原因可能是您使用的是相對單元格引用而不是絕對引用。

使用相對引用時,您輸入的公式將應用於選擇的第一個單元格(通常是左上角的單元格)。然後對該範圍內的每個其他單元應用,修改單元格引用。因此,如果公式引用要突出顯示的範圍中第一個單元格左側的單元格,則它將引用每個單元格左側的要突出顯示的單元格。

使用絕對引用時,您輸入的公式將與您輸入的公式完全相同。

對於實例

使用相對引用(單元格值> C5應用於D5:F133)

基本上,你有什麼是說你想突出(如D5每一個細胞: F133)如果該值大於直接在我左邊的單元格,則高亮顯示。

因此確定以下細胞:

  • 檢查D5針對C5
  • 檢查D6針對C6
  • 檢查D7針對C7
  • 檢查E5針對D5
  • 檢查E6針對D6
  • 依此類推......

對於絕對參考值(單元格值> $ C $ 5施加到D5:F133)

條件會說,對於要突出顯示,如果該值大於在單元格A1的值大於每一個細胞突出。

因此確定以下細胞:

  • 檢查D5針對C5
  • 檢查D6針對C5
  • 檢查D7針對C5
  • 檢查E5針對C5
  • 檢查E6針對C5
  • 依此類推......

要更改代碼中使用絕對引用您只需將美元符號($)添加到您想要的單元格地址,即:

Range extendedRange = activeWorksheet.get_Range("D5", oOpt).get_Resize(129, 3); 
FormatConditions fcs = extendedRange.FormatConditions; 
FormatCondition fc = (FormatCondition)fcs.Add(XlFormatConditionType.xlCellValue, 
    XlFormatConditionOperator.xlGreater, 
    "=$C$5", 
    oOpt, 
    oOpt, 
    oOpt, 
    oOpt, 
    oOpt); 

Interior interior = fc.Interior; 
interior.Color = ColorTranslator.ToOle(Color.Red); 

通知的$標誌添加到"=$C$5"

如果沒有按」幫助你可能需要更好地解釋發生的事情。

+0

感謝您的回覆。我希望這是相對的參考。當我執行代碼時,公式將更改爲D5而不是C5。我認爲它是因爲我正在申請一個沒有C5的範圍。我正在使用Visual Studio 2008 SP1。這可能是一個問題嗎? – user2063770 2015-02-24 09:09:02

+0

我不知道爲什麼它會改變單元格公式。 Visual Studio的版本不應該與它有任何關係。是否有太多的條件格式?一個範圍最多可以有3個。如果超過了該添加將失敗。 – awudoin 2015-02-24 09:46:24

+0

不,這是該工作表中唯一的條件格式。你說,我的代碼爲你工作。你能告訴我你使用的是什麼版本的excel interop和excel示例。我可以交叉檢查。謝謝 – user2063770 2015-02-24 10:45:06