AW: Formatierung von Pivot-Charts
18.03.2009 13:57:52
Pivot-Charts
Hallo selli,
da hab ich leider keine guten Nachrichten.
Zumindest bis zur Version Excel 2003 ist dass leider so.
Da bleibt als Ausweg "nur" die Formatierung des Diagramms per VBA-Anweisungen nach jeder Pivot-Aktualisierung oder Aktivierung des Diagrammblatts.
Das kann aber ziemlich kompliziert/aufwendig werden, abhängig von der Komplexität der Pivot-Tabelle.
Hier mal ein Beispiel für ein Linien-Diagramm, wobei 5 Linien vordefinierte Farben und Markierungen haben.
Die Prozeduren müssen im VBA-Editor unter dem Diagrammblatt eingefügt werden.
die Prozedur "DiagrammFormat(objChart As Chart)" kann aber auch in einem allgemeine Modul plaziert werden, wenn mehrere Diagramme gleichartig formatiert werden sollen.
Gruß
Franz
Private Sub Chart_Calculate()
Call DiagrammFormat(Me)
End Sub
Sub DiagrammFormat(objChart As Chart)
Dim objReihe As Series, intIndex
Dim lngLinecolorIndex As Long
Dim lngLineWeight As Long
Dim lngLineStyle As Long
Dim lngMarkerSize As Long
Dim lngMarkerStyle As Long
Dim lngMarkerBackGroundColorIndex As Long
Dim lngMarkerForegroundColorIndex As Long
With objChart
For Each objReihe In .SeriesCollection
intIndex = intIndex + 1
With objReihe
'Reihen-Linien im Diagramm fett darstellen
lngLineWeight = xlThick ' andere Werte: xlHairline, xlThin, xlMedium
'Linienart festlegen
lngLineStyle = xlContinuous ' ander Werte: xlDash, xlDashDot, _
xlDashDotDot, xlDot, xlDouble, xlSlantDashDot, xlLineStyleNone
lngMarkerSize = 9
'LinenFarben ind Markierung setzen
Select Case intIndex
Case 1
lngLinecolorIndex = 6 'gelb - xlColorIndexAutomatic ,xlColorIndexNone
lngMarkerStyle = xlMarkerStyleDiamond
'xlMarkerStyleAutomatic. Automatische Markierungen.
'xlMarkerStyleCircle. Runde Markierungen.
'xlMarkerStyleDash. Lange Balken als Markierungen.
'xlMarkerStyleDiamond. Rautenförmige Markierungen.
'xlMarkerStyleDot. Kurze Balken als Markierungen.
'xlMarkerStyleNone. Keine Markierung.
'xlMarkerStylePicture. Bildmarkierungen.
'xlMarkerStylePlus. Quadratische Markierungen mit einem Pluszeichen.
'xlMarkerStyleSquare. Quadratische Markierungen.
'xlMarkerStyleStar Quadratische Markierungen mit einem Sternchen.
'xlMarkerStyleTriangle. Dreieckige Markierungen.
'xlMarkerStyleX. Quadratische Markierungen mit einem X.
lngMarkerBackGroundColorIndex = 2
lngMarkerForegroundColorIndex = 6
Case 2
lngLinecolorIndex = 3 'Rot
lngMarkerStyle = xlMarkerStyleCircle
lngMarkerBackGroundColorIndex = 2
lngMarkerForegroundColorIndex = 3
Case 3
lngLinecolorIndex = 9 'Dunkelrot
lngMarkerStyle = xlMarkerStyleSquare
lngMarkerBackGroundColorIndex = 2
lngMarkerForegroundColorIndex = 9
Case 4
lngLinecolorIndex = 7 'Rosa
lngMarkerStyle = xlMarkerStyleTriangle
lngMarkerBackGroundColorIndex = 2
lngMarkerForegroundColorIndex = 7
Case 5
lngLinecolorIndex = 4 'Hellgrün
lngMarkerStyle = xlMarkerStyleTriangle
lngMarkerBackGroundColorIndex = 2
lngMarkerForegroundColorIndex = 4
Case Else
MsgBox "Mehr Linien im Diagram als Festlegungen für einzelne Linien."
lngLinecolorIndex = xlColorIndexAutomatic
lngMarkerStyle = xlMarkerStyleAutomatic
lngMarkerBackGroundColorIndex = xlColorIndexAutomatic
lngMarkerForegroundColorIndex = xlColorIndexAutomatic
End Select
.Border.LineStyle = lngLineStyle
.Border.Weight = lngLineWeight
.Border.ColorIndex = lngLinecolorIndex
.MarkerBackgroundColorIndex = lngMarkerBackGroundColorIndex
.MarkerForegroundColorIndex = lngMarkerForegroundColorIndex
.MarkerSize = lngMarkerSize
.MarkerStyle = lngMarkerStyle
End With
Next
End With
End Sub