2017-07-21 5 views
0

Ich habe ein Blatt mit Pivot-Tabelle und ich erstellen eine Spalte gestapelt Diagramm aus der Tabelle.Customzing die Diagramme mit VBA

Ich möchte die Farben der Legendeneinträge im Diagramm ändern und möchte jedes Mal, wenn ich das Diagramm erstelle, einen Titel für das Diagramm haben.

habe ich versucht, den Code unten und ich bin

Objektvariable oder mit Blockvariablen nicht gesetzt

Ich erhalte den Fehler in der Leitung

cht.SeriesCollection(1).Format.Fill.ForeColor.RGB = RGB(155, 213, 91) 

Könnte jemand bekommen Sag mir, wie ich ein Diagramm für meine Anforderungen erstellen könnte. Ich habe ein Bild von meinem aktuellen Diagramm und dem erforderlichen Diagramm hinzugefügt.

Sub chart11() 
    Dim sh As Shape 
    Dim cht As Chart 

    If ActiveSheet.PivotTables.Count = 0 Then Exit Sub 

    Set ptable = ActiveSheet.PivotTables(1) 
    Set ptr = ptable.TableRange1 
    Set sh = ActiveSheet.Shapes.AddChart 
    sh.Select 

    With ActiveChart 
     .SetSourceData ptr 
     .ChartType = xlColumnStacked 
    End With 

    cht.SeriesCollection(1).Format.Fill.ForeColor.RGB = RGB(155, 213, 91) 
    cht.Axes(xlCategory).MinimumScale = 5 
    cht.Axes(xlCategory).MaximumScale = 40 
    cht.HasTitle = True  
    cht.ChartTitle.Text = "Default Chart" 
End Sub 

Dies ist das jetzt von meinem Code erzeugt Chart, wenn ich die Fehlerzeile Kommentar:

This is the chart generated by my code now, if I comment the error line.

mag ich habe ein Diagramm dieser Art mit einer Änderung der Farblegenden und Grafik Titel:

I would like to have a chart of this type with change in colour legends and chart title

+0

Sie geben 'tch' nie etwas zu ?! – FunThomas

+0

@FunThomas bedeutet? – Jenny

+0

bedeutet, dass etwas wie 'Set cht = ActiveChart' fehlt. Sie haben 'cht' nur als Diagramm deklariert, aber die Variable ist leer, wenn Sie sie nicht auf ein existierendes oder neues Diagramm setzen. –

Antwort

1

Sie können nicht cht.Axes (xlCategory) .MinimumScale = 5 und MaximumScale verwenden. Da Pivot-Diagramm Scatterchart nicht unterstützt. Nur im Streudiagramm können Sie xlCategory Scale festlegen.

Sub chart11() 
    Dim sh As Shape 
    Dim cht As Chart 

    If ActiveSheet.PivotTables.Count = 0 Then Exit Sub 

    Set ptable = ActiveSheet.PivotTables(1) 
    Set ptr = ptable.TableRange1 
    Set sh = ActiveSheet.Shapes.AddChart 
    sh.Select 
    Set cht = ActiveChart 
    With cht 
     .SetSourceData ptr 
     .ChartType = xlColumnStacked 
    End With 

    cht.SeriesCollection(1).Format.Fill.ForeColor.RGB = RGB(255, 0, 0) '<~~ Red 
    cht.SeriesCollection(2).Format.Fill.ForeColor.RGB = RGB(0, 255, 0) '<~~ green 
    'cht.Axes(xlCategory).MinimumScale = 5 
    'cht.Axes(xlCategory).MaximumScale = 40 
    cht.HasTitle = True 
    cht.ChartTitle.Text = "Default Chart" 
End Sub 
+0

könnten Sie mir bitte den Farbcode für die obige Grafik liefern, habe ich für grün und rot gezeigt – Jenny

+0

@Jenny: Ich habe meine Antwort geändert. –

+0

danke es funktioniert perfekt – Jenny