2017-06-26 1 views
0

cela semble une question étrange et j'espère qu'il y a une explication simple comme j'ai oublié quelque chose ... mais quoi?Pourquoi PivotTable.EnableFieldList supprime-t-il la mise en forme conditionnelle?

J'ai du code qui crée heureusement un tableau croisé dynamique, puis lui applique une mise en forme conditionnelle. Je dois admettre, le bit mise en forme conditionnelle est pas le plus élégant que je viens recopié d'une macro enregistrée, mais il fait le travail:

Range("I:I").Select 
    Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _ 
     "=VALUE(TEXT(OFFSET(I1,0,-1),""#,###""))>0" 
    Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority 
    With Selection.FormatConditions(1).Interior 
     .PatternColorIndex = xlAutomatic 
     .ThemeColor = xlThemeColorAccent3 
     .TintAndShade = 0.599963377788629 
    End With 
    Selection.FormatConditions(1).StopIfTrue = False 

Aujourd'hui, je décide d'ajouter quelque chose au code pour désactiver certaines fonctionnalité de la table pivotante - Je souhaite empêcher les utilisateurs d'accéder à la liste des champs. J'ai ajouté le ci-dessous, qui a lieu juste après la section mise en forme conditionnelle:

With ActiveSheet.PivotTables(1) 
    .EnableFieldList = False 
End With 

Tout à coup, quand je le lance avec le nouvel ajout, la mise en forme conditionnelle est perdu! Pas une cellule colorée en vue. Il désactive la liste des champs avec succès, donc au moins il y a ça. Des idées du tout?

+0

Le problème avec l'application CF comme c'est qu'il est écrasé lorsque le rafraîchissement de tableau croisé dynamique. Vous devriez ajouter les règles CF à des champs spécifiques de la table pivot, si possible. – Rory

+0

Merci, Rory. Ce tableau pivotant particulier n'est pas censé être actualisé - la feuille de calcul et le pivot sont créés à partir de zéro chaque fois que le code est exécuté - mais est-il possible qu'il soit actualisé sans que je le lui ait dit? (Je sais que je n'ai pas collé le code complet ici, mais je suppose que ma question est, existe-t-il des fonctions qui impliquent un rafraîchissement même si ce n'est pas explicitement déclaré?) –

+0

Oui cela ressemble à désactiver la liste des champs provoque un rafraîchissement de la table , qui supprime le CF de cette partie de la colonne. – Rory

Répondre

0

Si vous appliquez la mise en forme conditionnelle après la désactivation de la liste des champs, ça va marcher

+0

Merci, Sam - juste essayé, mais bizarrement, il ne pas alors désactiver la liste des champs. Il semble qu'Excel n'autorise que l'un ou l'autre, selon ce qui arrive en premier dans le code. Si étrange! –

+0

Quelle version Excel avez-vous? Cela fonctionne dans mon Excel 2016 – Sam

+0

J'utilise Excel 2013. –