2012-07-14 2 views
1

Y a-t-il un moyen d'actualiser une mise en forme conditionnelle de cellules en utilisant VBA?La mise en forme conditionnelle ne semble pas être appliquée après la mise à jour des cellules

Je suis dans une situation où j'ai une cellule (A1) référençant une autre cellule (B1), qui contient une valeur numérique = SUM() avec le format de "nombre, 2 décimales" (A1) a une mise en forme conditionnelle sur "Cell Value> = 1000" et avec cela j'applique un format personnalisé, sinon il utilise un format monétaire pour les euros.

mettre à jour les valeurs en utilisant VBA puis effectuez

Application.CalculateFull 

qui met à jour mes formules, mais ce format conditionnel est appliqué ne se la première fois la valeur passe au-dessus de 1000 ... si elle est inférieure à 1000 il ne retourne pas à son format d'origine.

Quelqu'un a déjà eu ce problème et sait comment mettre à jour le formatage conditionnel? court d'utiliser VBA pour sélectionner la cellule et rafraîchir un peu comment?

+2

même si VBA est en train de changer la valeur la mise en forme conditionnelle doit toujours s'appliquer. S'il vous plaît essayez '? Application.enableevents = true' dans la fenêtre immédiate (quand dans VBE faire Ctl + G) ... il retourne false? – whytheq

+0

J'ai essayé ce que vous avez suggéré et il renvoie True. La cellule fait référence à une autre cellule, qui contient une formule. La mise en forme conditionnelle est mise à jour lorsque la valeur change et dépasse 1000 comme je l'ai mentionné, mais quand elle passe sous 1000, le format ne revient pas. – Pricey

+0

J'ai également essayé de mettre StopIfTrue à false sur le formatage conditionnel au cas où cela le ferait mais il n'a pas .. même pas trouvé une bonne référence à ce que cette propriété est censée faire. – Pricey

Répondre

1

J'ai décidé de sélectionner la cellule, de réappliquer la formule, puis de l'activer à chaque fois que le VBA a fini de fonctionner, le problème ci-dessous résout mon problème pour le moment ... c'est vraiment dommage.

Range("A1").Formula = "=B1" 
Range("A1").Select 
Range("A1").Activate 
1

Vous pouvez aussi essayer ceci:

Sub refreshScreen() 
    Application.Parent.Visible = False 
    Application.Parent.Visible = True 
End Sub 
0

Cela semble être un bug (ou incohérence) qui s'applique à la propriété NumberFormat pour la mise en forme conditionnelle si vous utilisez la mise en forme personnalisée. La mise en forme conditionnelle appliquera un NumberFormat personnalisé, mais ne reviendra pas à la valeur par défaut si elle n'est plus vraie. L'utilisation de VBA pour appliquer une mise en forme conditionnelle fonctionnerait comme prévu lors de l'utilisation de couleurs de police/d'arrière-plan, mais ne fonctionnerait plus comme prévu lors de l'application d'un NumberFormat personnalisé. J'ai travaillé autour de cela en créant deux formats conditionnels pour les scénarios vrai et faux.

Masquer le texte lorsque la condition est vrai

.NumberFormat = ";;;" 

Afficher le texte lorsque la condition est fausse

.NumberFormat = "General" 

Les paramètres suivants sont définis, mais ont pas d'impact sur le comportement:

  • EnableFormatConditionsCalculation est mis à Vrai
  • En ableEvents est définie sur True
  • Les calculs sont configurés sur Automatique

Voici un lien vers le poste qui m'a dirigé dans la bonne direction:

http://www.mrexcel.com/forum/excel-questions/735479-conditional-formatting-not-updating.html

Questions connexes