VBA – Leitfaden für Diagramme und Graphiken
In this Article
- Erstellen eines eingebetteten Diagramms mit VBA
- Festlegen eines Diagrammtyps mit VBA
- Hinzufügen eines Diagrammtitels mit VBA
- Ändern der Hintergrundfarbe des Diagramms mit VBA
- Ändern der Farbe des Diagrammzeichenbereichs mit VBA
- Hinzufügen einer Legende mit VBA
- Hinzufügen von Datenbeschriftungen mit VBA
- Hinzufügen einer X-Achse und eines Titels in VBA
- Hinzufügen einer Y-Achse und eines Titels in VBA
- Ändern des Zahlenformats einer Achse
- Ändern der Schriftartformatierung in einem Diagramm
- Löschen eines Diagramms mit VBA
- Verweis auf die ChartObjects-Sammlung
- Einfügen eines Diagramms in eigenes Diagrammblatt
Excel-Diagramme und -Grafiken werden zur visuellen Darstellung von Daten verwendet. In diesem Tutorial lernen Sie, wie Sie mit VBA Diagramme und Diagrammelemente erstellen und bearbeiten können. Sie können eingebettete Diagramme in einem Arbeitsblatt oder Diagramme in eigenen Diagrammblättern erstellen.
Erstellen eines eingebetteten Diagramms mit VBA
Wir haben den Bereich A1:B4, der die Quelldaten, wie unten dargestellt, enthält:
Sie können ein Diagramm mit der Methode ChartObjects.Add erstellen. Mit dem folgenden Code wird ein eingebettetes Diagramm auf dem Arbeitsblatt erstellt:
Sub Eingebettetes_Diagramm_mit_ChartObject_Erstellen()
Dim eingebettetesDiagramm As ChartObject
Set eingebettetesDiagramm = Sheets("Sheet1").ChartObjects.Add(Left:=180, Width:=300, Top:=7, Height:=200)
eingebettetesDiagramm.Chart.SetSourceData Source:=Sheets("Sheet1").Range("A1:B4")
End Sub
Das Ergebnis ist:
Sie können ein Diagramm auch mit der Methode Shapes.AddChart erstellen. Mit dem folgenden Code wird ein eingebettetes Diagramm auf dem Arbeitsblatt erstellt:
Sub Eingebettetes_Diagramm_mit_ShapesAddChart_Erstellen()
Dim eingebettetesDiagramm As Shape
Set eingebettetesDiagramm = Sheets("Sheet1").Shapes.AddChart
eingebettetesDiagramm.Chart.SetSourceData Source:=Sheets("Sheet1").Range("A1:B4")
End Sub
Festlegen eines Diagrammtyps mit VBA
Wir haben den Bereich A1:B5, der die Quelldaten enthält (siehe unten):
Mit der Eigenschaft ChartType können Sie einen Diagrammtyp angeben. Der folgende Code erstellt ein Kreisdiagramm auf dem Arbeitsblatt, da die Eigenschaft ChartType auf xlPie gesetzt wurde:
Sub DiagrammTyp_Spezifizieren()
Dim diag As ChartObject
Set diag = Sheets("Sheet1").ChartObjects.Add(Left:=180, Width:=270, Top:=7, Height:=210)
diag.Chart.SetSourceData Source:=Sheets("Sheet1").Range("A1:B5")
diag.Chart.ChartType = xlPie
End Sub
Das Ergebnis ist:
Dies sind einige der gängigen Diagrammtypen, die in der Regel angegeben werden. Es gibt jedoch weitere:
- xlArea
- xlPie
- xlLine
- xlRadar
- xlXYScatter
- xlSurface
- xlBubble
- xlBarClustered
- xlColumnClustered
Hinzufügen eines Diagrammtitels mit VBA
Wir haben ein Diagramm im Arbeitsblatt, wie unten gezeigt, ausgewählt:
Sie müssen zunächst mit der Methode Chart.SetElement einen Diagrammtitel hinzufügen und dann den Text des Diagrammtitels angeben, indem Sie die Eigenschaft ChartTitle.Text festlegen. Der folgende Code zeigt Ihnen, wie Sie einen Diagrammtitel hinzufügen und den Titeltext des Aktiven Diagramms festlegen:
Sub Titel_Hinzufuegen_Und_Einstellen()
ActiveChart.SetElement (msoElementChartTitleAboveChart)
ActiveChart.ChartTitle.Text = "The Sales of the Product"
End Sub
Das Ergebnis ist:
Hinweis: Sie müssen das Diagramm zuerst auswählen, um es zum aktiven Diagramm zu machen, damit Sie das ActiveChart-Objekt in Ihrem Code verwenden können.
Ändern der Hintergrundfarbe des Diagramms mit VBA
Wir haben ein Diagramm im Arbeitsblatt, wie unten gezeigt, ausgewählt:
Sie können die Hintergrundfarbe des gesamten Diagramms ändern, indem Sie die RGB-Eigenschaft des FillFormat-Objekts des ChartArea-Objekts einstellen. Mit dem folgenden Code erhält das Diagramm eine hellorangene Hintergrundfarbe:
Sub Diagrammflaeche_Hintergrundfarbe_Einstellen()
ActiveChart.ChartArea.Format.Fill.ForeColor.RGB = RGB(253, 242, 227)
End Sub
Das Ergebnis ist:
Sie können auch die Hintergrundfarbe des gesamten Diagramms ändern, indem Sie die Eigenschaft ColorIndex des Interior-Objekts des ChartArea-Objekts einstellen. Mit dem folgenden Code erhält das Diagramm eine orangefarbene Hintergrundfarbe:
Sub Diagrammflaeche_Hintergrundfarbe_Einstellen()
ActiveChart.ChartArea.Interior.ColorIndex = 40
End Sub
Das Ergebnis ist:
Hinweis: Mit der Eigenschaft ColorIndex können Sie eine Farbe auf der Grundlage eines Wertes von 1 bis 56 aus der Standard-Palette angeben. Um zu sehen, welche Werte die verschiedenen Farben darstellen, klicken Sie hier.
Ändern der Farbe des Diagrammzeichenbereichs mit VBA
Im Arbeitsblatt ist ein Diagramm ausgewählt (siehe unten):
Sie können nur die Hintergrundfarbe des Diagrammbereichs ändern, indem Sie die RGB-Eigenschaft des FillFormat-Objekts des PlotArea-Objekts einstellen. Mit dem folgenden Code erhält der Zeichenbereich des Diagramms eine hellgrüne Hintergrundfarbe:
Sub Diagrammzeichenflaeche_Hintergrundfarbe_Einstellen()
ActiveChart.PlotArea.Format.Fill.ForeColor.RGB = RGB(208, 254, 202)
End Sub
Das Ergebnis ist:
Hinzufügen einer Legende mit VBA
Wir haben ein Diagramm im Arbeitsblatt, wie unten gezeigt, ausgewählt:
Sie können eine Legende mit der Methode Chart.SetElement hinzufügen. Der folgende Code fügt eine Legende auf der linken Seite des Diagramms hinzu:
Sub Legende_Hinzufuegen()
ActiveChart.SetElement (msoElementLegendLeft)
End Sub
Das Ergebnis ist:
Sie können die Position der Legende auf folgende Weisen festlegen:
- msoElementLegendLeft – zeigt die Legende auf der linken Seite des Diagramms an.
- msoElementLegendLeftOverlay – überlagert die Legende auf der linken Seite des Diagramms.
- msoElementLegendRight – zeigt die Legende auf der rechten Seite des Diagramms an.
- msoElementLegendRightOverlay – überlagert die Legende auf der rechten Seite des Diagramms.
- msoElementLegendBottom – zeigt die Legende am unteren Rand des Diagramms an.
- msoElementLegendTop – zeigt die Legende am oberen Rand des Diagramms an.
Hinzufügen von Datenbeschriftungen mit VBA
Im Arbeitsblatt ist ein Diagramm, wie unten dargestellt, ausgewählt:
Sie können Datenbeschriftungen mit der Methode Chart.SetElement hinzufügen. Der folgende Code fügt Datenbeschriftungen im Innenbereich des Diagramms hinzu:
Sub Datenbeschriftungen_Hinzufuegen()
ActiveChart.SetElement msoElementDataLabelInsideEnd
End Sub
Das Ergebnis ist:
Sie können die Positionierung der Datenbeschriftungen auf folgende Weisen festlegen:
- msoElementDataLabelShow – zeigt Datenbeschriftungen an.
- msoElementDataLabelRight – zeigt Datenbeschriftungen auf der rechten Seite des Diagramms an.
- msoElementDataLabelLeft – zeigt Datenbeschriftungen auf der linken Seite des Diagramms an.
- msoElementDataLabelTop – zeigt Datenbeschriftungen am oberen Rand des Diagramms an.
- msoElementDataLabelBestFit – bestimmt die beste Anpassung.
- msoElementDataLabelBottom – zeigt Datenbeschriftungen am unteren Rand des Diagramms an.
- msoElementDataLabelCallout – zeigt Datenbeschriftungen in hervorgehobenen Textfeldern an.
- msoElementDataLabelCenter – zeigt Datenbeschriftungen in der Mitte an.
- msoElementDataLabelInsideBase – zeigt Datenbeschriftungen in der inneren Basis an.
- msoElementDataLabelOutSideEnd – zeigt Datenbeschriftungen an der äußeren Ende des Diagramms an.
- msoElementDataLabelInsideEnd – zeigt Datenbeschriftungen an der inneren Ende des Diagramms an.
Hinzufügen einer X-Achse und eines Titels in VBA
Wir haben ein Diagramm im Arbeitsblatt, wie unten gezeigt, ausgewählt:
Sie können eine X-Achse und einen X-Achsentitel mit der Methode Chart.SetElement hinzufügen. Der folgende Code fügt dem Diagramm eine X-Achse und einen X-Achsentitel hinzu:
Sub XAchse_Und_XTitel_Hinzufuegen()
With ActiveChart
.SetElement msoElementPrimaryCategoryAxisShow
.SetElement msoElementPrimaryCategoryAxisTitleHorizontal
End With
End Sub
Das Ergebnis ist:
Hinzufügen einer Y-Achse und eines Titels in VBA
Wir haben ein Diagramm im Arbeitsblatt ausgewählt, wie unten gezeigt:
Sie können eine Y-Achse und einen Y-Achsentitel mithilfe der Methode Chart.SetElement hinzufügen. Der folgende Code fügt dem Diagramm eine Y-Achse und einen Y-Achsentitel hinzu:
Sub YAchse_Und_YTitel_Hinzufuegen()
With ActiveChart
.SetElement msoElementPrimaryValueAxisShow
.SetElement msoElementPrimaryValueAxisTitleHorizontal
End With
End Sub
Das Ergebnis ist:
Ändern des Zahlenformats einer Achse
Wir haben ein Diagramm im Arbeitsblatt, wie unten gezeigt, ausgewählt:
Sie können das Zahlenformat einer Achse ändern. Der folgende Code ändert das Zahlenformat der Y-Achse in Währung:
Sub Zahlenformate_Aendern()
ActiveChart.Axes(xlValue).TickLabels.NumberFormat = "€#,##0.00"
End Sub
Das Ergebnis ist:
Ändern der Schriftartformatierung in einem Diagramm
Wir haben das folgende Diagramm im Arbeitsblatt, wie unten gezeigt, ausgewählt:
Sie können die Formatierung der gesamten Diagrammschriftart ändern, indem Sie auf das Schriftartobjekt verweisen und dessen Namen, Schriftstärke und Größe ändern. Der folgende Code ändert Art, Schriftschnitt und Größe der Schrift des gesamten Diagramms.
Sub SchriftFormatierung_Aendern()
With ActiveChart
.ChartArea.Format.TextFrame2.TextRange.Font.Name = "Times New Roman"
.ChartArea.Format.TextFrame2.TextRange.Font.Bold = True
.ChartArea.Format.TextFrame2.TextRange.Font.Size = 14
End With
Das Ergebnis ist:
Löschen eines Diagramms mit VBA
Wir haben ein Diagramm im Arbeitsblatt, wie unten gezeigt, ausgewählt:
Wir können den folgenden Code verwenden, um dieses Diagramm zu löschen:
Sub DasDiagrammLoeschen()
ActiveChart.Parent.Delete
End Sub
Verweis auf die ChartObjects-Sammlung
Sie können auf alle eingebetteten Diagramme in Ihrem Arbeitsblatt oder Ihrer Arbeitsmappe zugreifen, indem Sie sich auf die ChartObjects-Sammlung beziehen. Wir haben zwei Diagramme auf demselben Blatt wie unten dargestellt:
Wir werden auf die ChartObjects-Sammlung zugreifen, um den beiden Diagrammen auf dem Arbeitsblatt die gleiche Höhe und Breite zu geben, die Gitternetzlinien zu löschen, die Hintergrundfarbe gleich zu machen, die gleiche Farbe für die Zeichenflächen zu geben und die Farbe der Linien der Zeichenflächen gleich zu machen:
Sub AufAlleDiagrammeImBlattVerweisen()
Dim diag As ChartObject
For Each diag In ActiveSheet.ChartObjects
diag.Height = 144.85
diag.Width = 246.61
diag.Chart.Axes(xlValue).MajorGridlines.Delete
diag.Chart.PlotArea.Format.Fill.ForeColor.RGB = RGB(242, 242, 242)
diag.Chart.ChartArea.Format.Fill.ForeColor.RGB = RGB(234, 234, 234)
diag.Chart.PlotArea.Format.Line.ForeColor.RGB = RGB(18, 97, 172)
Next diag
End Sub
Das Ergebnis ist:
Einfügen eines Diagramms in eigenes Diagrammblatt
Wir haben den Bereich A1:B6, der die Quelldaten, wie unten dargestellt, enthält:
Sie können ein Diagramm mit der Methode Charts.Add erstellen. Mit dem folgenden Code wird ein Diagramm auf eigenem Diagrammblatt erstellt:
Sub DiagramMMitEigenemBlattHinzufuegen()
Sheets("Sheet1").Range("A1:B6").Select
Charts.Add
End Sub
Das Ergebnis ist:
Sehen Sie sich einige unserer anderen Tutorials zur Diagrammerstellung an: Diagramme in Excel Erstellen eines Balkendiagramms in VBA