2012-08-02 3 views
0

J'ai ajouté une condition de format sur une plage avec une mise en forme en utilisant le code ci-dessous.Modification dynamique de la plage de 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; 

Maintenant, ma gamme change dynamically .Je souhaite que l'utilisation du même objet FormatCondition je change juste la plage où ces formats sont appliqués. Par exemple à la première instance, il pourrait être juste "$A$1" plus tard, il pourrait être "$A$2,$D$5" ou "$A$3:$A$20".

Cela peut être fait en utilisant Excel directement. Formatage conditionnel -> Gérer les règles -> S'applique à (Modifier ceci). Comment cela peut-il être réalisé en utilisant C#.

Répondre

0

Cela fonctionne pour moi. Je trouve que mettre la ligne "using" ci-dessous en haut permet d'économiser beaucoup d'efforts.

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

Merci remou son travail :) –

+0

en utilisant ModifyAppliesToRange donne une exception lorsque vous essayez d'accéder à la formule (Formule1) de formatConditionObj après l'application myNewRange sur formatConditionObj. Pourquoi ce comportement? –

+0

Vous voudrez peut-être poser cette question avec des détails supplémentaires, car je ne sais pas trop ce que vous voulez dire. – Fionnuala

Questions connexes