Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Excel VBA Diagramm erstellen

Excel VBA Diagramm erstellen
07.01.2020 15:25:55
Andreas
Guten Mittag,
habe ein Problem beim Versuch ein Diagramm per Makro zu erstellen.
Ich habe dazu den groben Vorgang per Rekorder aufgezeichnet, nun läuft das Makro leider noch nicht ganz perfekt.
Sub Pareto()
Dim wks As Worksheet: Set wks = ActiveSheet
wks.Range("A10:A45,AH10:AH45").Select
ActiveSheet.Shapes.AddChart2(366, xlRegionMap).Select
ActiveSheet.ChartObjects("Diagramm 5").Activate
End Sub
Das Makro sollte eig. zwei Spalten markieren und dann ein einfaches Diagramm (Säulen) erstellen.
Leider kann ich entweder nur 1x das Diagramm erstellen lassen oder gar nicht (bei älteren Excelversionen)
Ich glaube es liegt an der letzten Zeile "ActiveSheet.ChartObjects("Diagramm 5").Activate" Hier spreche ich das Diagramm 5 an. Sollte der Bezug nicht genauer sein und nicht der Name eines Diagramms sein?
Kann mir hier jemand weiterhelfen? Wie muss ich das Makro schreiben?
Anzeige

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Excel VBA Diagramm erstellen
07.01.2020 22:13:29
Regina
Hallo Andreas,
der von Dir gezeigte Code, kann nicht ausschließlich das Ergebnis einer Makroaufzeichnung sein.
Es wird außerdem kein Säulendiagram erstellt, sondern ein, erst in neueren Versionen verfügbares, Länderdiagramm.
Der folgende Code erzeugt ein einfaches Säulendiagram auf Basis der Zellen A1 bis B4:
    ActiveSheet.Shapes.AddChart2(201, xlColumnClustered).Select
ActiveChart.SetSourceData Source:=Range("Tabelle1!$A$1:$B$4")
Gruß Regina
Anzeige
AW: Excel VBA Diagramm erstellen
09.01.2020 15:34:56
Andreas
Hallo Zusammen,
vielen Dank für die Hilfe.
Ich habe jetzt folgenden Code erstellt:
Sub Pareto()
Dim wks As Worksheet: Set wks = ActiveSheet
wks.Range("A10:A44,AH10:AH44").Select
ActiveSheet.Shapes.AddChart2(201, xlColumnClustered).Select
ActiveChart.SetSourceData Source:=wks.Range("A10:A44,AH10:AH44")
End Sub
Bei mir funktioniert dieser wie erwartet.
Leider jedoch bei einer älteren Excelversion (2010) nicht.
Kann mir jemand sagen woran das liegt?
Anzeige
AW: Excel VBA Diagramm erstellen
09.01.2020 15:42:13
Pierre
Hi,
ich vermute, es liegt an der 201.

ActiveSheet.Shapes.AddChart2(201, xlColumnClustered).Select
Versuche bei 2010 mal stattdessen die 51.
Gruß Pierre
Falsch verstanden
09.01.2020 15:49:30
Pierre
Sorry, ich habe nochmal genauer gelesen.
AddChart2 wurde erst 2013 eingeführt, folglich geht es mit 2010 gar nicht.
Anzeige
AW: Falsch verstanden
09.01.2020 16:05:24
Andreas
Somit kann ich mir mit Excel 2010 keine Diagramme per Makro ausgeben lassen?
AW: Excel VBA Diagramm erstellen
09.01.2020 15:58:40
Andreas
Hallo Pierre,
Sub Pareto()
Dim wks As Worksheet: Set wks = ActiveSheet
wks.Range("A10:A44,AH10:AH44").Select
ActiveSheet.Shapes.AddChart2(51, xlColumnClustered).Select
ActiveChart.SetSourceData Source:=wks.Range("A10:A44,AH10:AH44")
End Sub
Leider funktioniert dieser auch nicht (sowohl auf 2016 als auch 2010 nicht)
Anzeige
VBA Diagramm erstellen
09.01.2020 16:29:10
Beverly
Hi Andreas,
selbstverständlich kann man auch in allen Vorgänderversionen Diagramme per VBA erstellen - und zwar nach diesem Prinzip:
Sub DiaErstellenUniversell()
Dim wks As Worksheet: Set wks = ActiveSheet
With wks.ChartObjects.Add(150, 150, 400, 300).Chart
.ChartType = xlColumnClustered
.SetSourceData Source:=Union(wks.Range("A10:A45"), wks.Range("AH10:AH45"))
End With
End Sub


Anzeige
AW: Excel VBA Diagramm erstellen
08.01.2020 08:36:15
Beverly
Hi,
wie im anderen Beitrag bereits geschrieben - das Länderdiagramm gibt es erst in einer neueren Excelversion, nicht jedoch in Excel2016 und älter.
Wenn du ein jeweils neu erstelles Diagramm ansprechen willst, ohne seinen Namen zu kennen, lässt sich das so realisieren:
ActiveSheet.ChartObjects(ActiveSheet.ChartObjects.Count)

Du brauchst das ganze aber überhaupt nicht, wenn du dich in einer With-Anweisung auf das neu erstellte Diagramm beziehst - nach diesem Prinzip:
    Dim wks As Worksheet: Set wks = ActiveSheet
With wks.Shapes.AddChart2(366, xlRegionMap).Chart
.SetSourceData Source:=Union(wks.Range("A10:A45"), wks.Range("AH10:AH45"))
End With

Das unnötige Selektieren kannst da dabei auch gleich umgehen.


Anzeige
AW: Excel VBA Diagramm erstellen
09.01.2020 16:28:28
Andreas
Hallo Beverly,
mir geht es nicht darum ein Diagramm anzusprechen, sondern erstmal eines zu erstellen.
Mir reicht dabei ein ganz normales Säulendiagramm und kein Länderdiagramm.
Dennoch vielen Dank schonmal für die Hilfe und Viele Grüße
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Excel VBA Diagramm erstellen


Schritt-für-Schritt-Anleitung

Um ein einfaches Diagramm mit VBA zu erstellen, befolge diese Schritte:

  1. Öffne Excel und drücke ALT + F11, um den Visual Basic for Applications (VBA) Editor zu öffnen.

  2. Füge ein neues Modul hinzu:

    • Klicke mit der rechten Maustaste auf „VBAProject (DeinWorkbookName)“.
    • Wähle „Einfügen“ und dann „Modul“.
  3. Kopiere und füge den folgenden Code ein, um ein einfaches Säulendiagramm zu erstellen:

    Sub EinfachesDiagrammErstellen()
       Dim wks As Worksheet
       Set wks = ActiveSheet
       With wks.ChartObjects.Add(150, 150, 400, 300).Chart
           .ChartType = xlColumnClustered
           .SetSourceData Source:=Union(wks.Range("A10:A45"), wks.Range("AH10:AH45"))
       End With
    End Sub
  4. Führe das Makro aus:

    • Gehe zurück zu Excel und drücke ALT + F8.
    • Wähle „EinfachesDiagrammErstellen“ und klicke auf „Ausführen“.

Häufige Fehler und Lösungen

  • Fehler: „Diagramm kann nicht erstellt werden“

    • Lösung: Stelle sicher, dass die Quellbereiche nicht leer sind. Überprüfe die angegebenen Zellen.
  • Fehler bei älteren Versionen (z.B. Excel 2010)

    • Lösung: Verwende die AddChart-Methode anstelle von AddChart2, da Letztere erst ab Excel 2013 verfügbar ist. Beispiel:
    ActiveSheet.ChartObjects.Add(Left:=100, Top:=100, Width:=375, Height:=225).Chart

Alternative Methoden

Wenn du ein Diagramm in Excel VBA erstellen möchtest, kannst du auch die AddChart-Methode verwenden. Hier ist ein Beispiel:

Sub DiagrammMitAddChart()
    Dim wks As Worksheet
    Set wks = ActiveSheet
    Dim diagramm As Chart
    Set diagramm = wks.Shapes.AddChart(xlColumnClustered).Chart
    diagramm.SetSourceData Source:=wks.Range("A10:A45,AH10:AH45")
End Sub

Diese Methode ist besonders nützlich, wenn du mit älteren Excel-Versionen arbeitest und dennoch ein VBA Diagramm erstellen möchtest.


Praktische Beispiele

Hier sind einige Beispiele, wie du verschiedene Diagrammtypen erstellen kannst:

  1. Liniendiagramm erstellen:

    Sub LiniendiagrammErstellen()
       Dim wks As Worksheet
       Set wks = ActiveSheet
       With wks.ChartObjects.Add(150, 150, 400, 300).Chart
           .ChartType = xlLine
           .SetSourceData Source:=wks.Range("A10:A45")
       End With
    End Sub
  2. Tortengrafik erstellen:

    Sub TortengrafikErstellen()
       Dim wks As Worksheet
       Set wks = ActiveSheet
       With wks.ChartObjects.Add(150, 150, 400, 300).Chart
           .ChartType = xlPie
           .SetSourceData Source:=wks.Range("A10:A20")
       End With
    End Sub

Tipps für Profis

  • Verwendung von With-Anweisungen: Dies reduziert den Code und macht ihn übersichtlicher.

  • Automatisierung von Diagrammen: Du kannst Diagramme automatisch erstellen lassen, indem du das Diagramm direkt nach dem Hinzufügen bearbeitest, ohne es zu aktivieren.

  • Diagramme anpassen: Nutze Eigenschaften wie .HasLegend, um Legenden hinzuzufügen oder anzupassen:

    diagramm.HasLegend = True

FAQ: Häufige Fragen

1. Wie kann ich ein Diagramm automatisch erstellen?
Du kannst ein Excel Diagramm automatisch erstellen, indem du den AddChart oder AddChart2-Befehl in deinem Makro verwendest.

2. Funktioniert das Makro auch in Excel 2010?
Ja, du kannst Diagramme auch in Excel 2010 erstellen, indem du die AddChart-Methode anstelle von AddChart2 verwendest.

3. Wie kann ich den Diagrammtyp ändern?
Ändere den Wert der ChartType-Eigenschaft in deinem VBA-Code. Zum Beispiel, um ein Liniendiagramm zu erstellen, setze .ChartType = xlLine.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige