2016-06-20 11 views
0

In Excel Vba Ich erstelle eine Pivot-Tabelle und möchte die Kopfzeile (erste zwei Zeilen) und untere Zeile (1 Zeile) blau mit weißer Schrift füllen.Excel VBA Pivot Tabelle Füllung Kopfzeile

Der folgende Code füllt das Innere der ersten Datensatzzeile und nicht die Kopfzeile.

With ActiveSheet.PivotTables(1).TableRange1 
.Cells.Borders.LineStyle = xlContinuous 
.Range("A3:I4").Interior.ColorIndex = 49 
.Range("A13:I13").Interior.ColorIndex = 49 
End With 

Gibt es eine Möglichkeit, die Kopfzeile und die letzte Zeile der Pivot-Tabelle dynamisch zu referenzieren? Es wäre besser, auf "pivot table header" als spezifische Bereiche zu verweisen, wenn sich die Werte des Berichts ändern.

Antwort

1

Sie können einfach verwenden diese:

With ActiveSheet.PivotTables("PivotTable1") 
    Debug.Print "full headers at: " & Intersect(.Parent.Range(.TableRange1.Row & ":" & .DataBodyRange.Row - 1), .TableRange1).Address 
    Debug.Print "last row-range at: " & .TableRange1.Rows(1).Offset(.TableRange1.Rows.Count - 1).Address 
End With 

aber an Ihrem Unter suchen, wäre der einfachste Weg, zu ändern:

.Range("A3:I4").Interior.ColorIndex = 49 
.Range("A13:I13").Interior.ColorIndex = 49 

zu:

Union(.Rows("1:2"), .Rows(.Rows.Count)).Interior.ColorIndex = 49 
1

Es ist eine dynamische Art und Weise die Kopfzeilen und die letzte Zeile zu adressieren:

Dim pvtFirstRow, pvtLastRow  As Integer 

pvtFirstRow = ActiveSheet.PivotTables(1).TableRange1.row + x ' modify x to the first row where your Pivot data starts 
pvtLastRow = ActiveSheet.PivotTables(1).TableRange1.Cells(ActiveSheet.PivotTables(1).TableRange1.Cells.count).row 
0

Der im Thread dargestellte Code funktioniert zwar, muss aber in Zukunft erneut ausgeführt werden: Immer wenn sich die Anzahl der Zeilen oder Spalten im Pivot ändert, können Sie mit farbigen Zeilen oder Spalten sitzen Pivot oder farbige Zellen im falschen Teil des Pivots.

Ich schlage vor, dass Sie die integrierten Pivot-Stile von Excel betrachten, wählen Sie die am nächsten, was Sie brauchen, und verwenden Sie Code wie folgt, um die Kopfzeile (n) und die Gesamtsumme Zeile zu ändern. Es besteht keine Notwendigkeit, Bereiche von Zellen zu manipulieren, da Sie das nächste Mal die gesamte Zeile abschalten möchten (um des Arguments willen), aber der Bereich wird immer noch farbig sein.

Ich habe ein Makro aufgezeichnet und alle redundanten Codezeilen entfernt, damit Sie sehen können, was sich ändert. Ich entferne auch eine nützliche Zeile (.TintAndShade =) und ersetze sie durch eine "ColorIndex =" Anweisung, um den Blauschatten zu erzwingen, den Sie bevorzugen.

Nachdem Sie dies ausgeführt haben, sollten Sie denselben Stil für alle anderen (vorhandenen und neuen) Pivots in derselben Arbeitsmappe verfügbar haben. Sie könnten es sogar als Standard festlegen. Sie müssen den Code nicht erneut ausführen, um formatieren zu können, wenn Ihr Pivot [Refresh] einen anderen Bereich von Zellen abdeckt.

können Sie einen anderen Stil ein aus der eigenen Palette auswählen und Ihre eigenen Namen für die Kopie verwenden, solange Sie alle relevanten Zeichenfolgen in dem folgenden Beispielcode oder Ihre eigenen Aktionen aufzeichnen finden und ersetzen:

Sub ColourPivotStyleForThisBook() 

    'duplicate blue/medium pivot style from template 
    ActiveWorkbook.TableStyles("PivotStyleMedium2").Duplicate ("PivotStyleMedium2v2" _ 
     ) 
    With ActiveWorkbook.TableStyles("PivotStyleMedium2v2") 
     .ShowAsAvailablePivotTableStyle = True 
     .ShowAsAvailableTableStyle = False 
     .ShowAsAvailableSlicerStyle = False 
     .ShowAsAvailableTimelineStyle = False 
    End With 

    'now modify header's style (fill) (font colour is white/automatic already) 
    With ActiveWorkbook.TableStyles("PivotStyleMedium2v2").TableStyleElements(_ 
     xlHeaderRow).Interior 
     'only one/two lines are changing the colours 
'  .TintAndShade = -0.249977111117893 
     .ColorIndex = 49 
    End With 

    'now modify grand total row's style (fill) (font colour is white/automatic already) 
    With ActiveWorkbook.TableStyles("PivotStyleMedium2v2").TableStyleElements(_ 
     xlTotalRow).Interior 
     'only one/two lines are changing the colours 
'  .TintAndShade = -0.249946592608417 
     .ColorIndex = 49 
    End With 

End Sub 

Wenn das Ergebnis nicht das ist, wonach Sie suchen, wählen Sie einfach einen Teil eines Pivots in der Arbeitsmappe aus, tippen Sie auf die Registerkarte Entwurf der PivotTable-Werkzeuge, klicken Sie mit der rechten Maustaste auf den Code, den Sie erstellt haben oben im Abschnitt "Benutzerdefiniert") und klicken Sie auf "Löschen". Hoffe das hilft.

(Sie können auch Code wie oben verwenden, um Pivot-Tabelle Stile in anderen Arbeitsmappe anpassen, die Pivot-Tabellen noch nicht haben.)

+0

Der Stil gebaut ich in meinem ursprünglichen Code gepflückt, bereits verwendet weiß als Schriftfarbe daher Die Schriftartfarbe in meinem Code wird nicht speziell angesprochen. Abhängig von dem Stil, mit dem Sie beginnen, müssen Sie möglicherweise hier und da eine Zeile hinzufügen, um die Schriftfarbe zu ändern. – WdW

Verwandte Themen