2017-04-04 1 views
0

J'ai une feuille de calcul avec un formatage conditionnel appliqué à certaines plages de cellules (par exemple $B$4:$F$5). J'ai mis en place une macro pour ajouter une nouvelle ligne, en copiant le formatage + formules dans la dernière ligne en cours. Le problème est, chaque fois que j'ajoute une nouvelle ligne une règle de mise en forme conditionnelle supplémentaire est créée affectant seulement la nouvelle ligne. Comment puis-je utiliser VBA pour étendre le conditionnel que j'ai déjà configuré - ce qui affecte la règle? $B$4:$F$6?Excel VBA: Modification des règles de mise en forme conditionnelle existantes pour les nouvelles lignes

+0

Bien sûr, c'est possible. Qu'avez-vous essayé? Oui/Non et "S'il vous plaît donnez-moi du code qui ne XYZ" les questions ne se portent pas très bien sur ce site. Avez-vous lu [demander]? –

+0

Quelle version d'Excel utilisez-vous? Le bogue concernant des milliers de CFRs presque identiques provenant de la copie a été corrigé dans Excel 2010 et (je crois) corrigé dans un service pack pour xl2007. Et ** non ** vous ne pouvez pas ajuster la plage appliquée sans détruire l'original et le recréer. – Jeeped

+1

@Jeeped "détruire l'original et le recréer" -> donc possible ... au moins si vous considérez seulement le résultat et non les moyens d'y arriver ;-) –

Répondre

1

Remplissez et supprimez les constantes au lieu de copier et coller des éléments spéciaux, des valeurs et des formats. Cela devrait sans équivoque étendre le CFR à la nouvelle rangée.

With Worksheets("sheet1") 
    With .Range(.Cells(4, "B"), .Cells(.Rows.Count, "F").End(xlUp)) 
     .Offset(.Rows.Count - 1, 0).Resize(2, .Columns.Count).FillDown 
     On Error Resume Next 
     'Debug.Print .Offset(.Rows.Count, 0).Resize(1, .Columns.Count).Address(0, 0) 
     .Offset(.Rows.Count, 0).Resize(1, .Columns.Count).SpecialCells(xlCellTypeConstants, 23).ClearContents 
     On Error GoTo 0 
    End With 
End With