2012-08-02 134 views
0

我已經使用下面的代碼在某個範圍上添加了格式條件。動態更改FormatCondition的範圍

Microsoft.Office.Interop.Excel.FormatCondition formatConditionObj = null; 

formatConditionObj = (Microsoft.Office.Interop.Excel.FormatCondition)myRange 
    .FormatConditions.Add(Excel.XlFormatConditionType.xlExpression, 
    Type.Missing, true, Type.Missing, Type.Missing, Type.Missing, 
    Type.Missing, Type.Missing); 

formatConditionObj.Interior.ColorIndex = 5; 

現在我的變化範圍dynamically。我想使用相同FormatCondition對象我只是改變其中該格式應用的範圍。例如,首先它可能只是"$A$1",它可能是"$A$2,$D$5""$A$3:$A$20"

這可以直接使用excel來完成。連續格式化 - >管理規則 - >應用於(編輯此)。如何使用C#實現這一點。

回答

0

這適用於我。我發現把頂端的「使用」一行放在頂端可以節省很多努力。

using Microsoft.Office.Interop.Excel; 

<...> 

     formatConditionObj = (FormatCondition)myRange.FormatConditions 
      .Add(XlFormatConditionType.xlExpression, 
      Type.Missing, true, Type.Missing, Type.Missing, 
      Type.Missing, Type.Missing, Type.Missing); 

     formatConditionObj.Interior.ColorIndex = 5; 

     Range myNewRange = ws.Range["a10:a15"]; 
     formatConditionObj.ModifyAppliesToRange(myNewRange); 

<...> 
+0

由於Remou其工作:) – 2012-08-02 10:55:32

+0

使用ModifyAppliesToRange給人試穿formatConditionObj應用myNewRange後訪問formatConditionObj的公式(一級方程式)時異常。這是爲什麼? – 2012-08-21 04:24:48

+0

你可能會問,作爲一個新的問題與一些額外的細節,因爲我非常確定你的意思。 – Fionnuala 2012-08-21 10:29:14