Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Diagramm mit VBA erstellen

Diagramm mit VBA erstellen
13.04.2013 15:13:51
Martin
Hallo,
ich möchte mit VBA ein Diagramm im aktuellen Arbeitsblatt erstellen, und verwende dazu den folgenden Code:
Dim WS As Worksheet
Dim Diagram As ChartObject
Set WS = ActiveSheet
Set Diagram = WS.ChartObjects.Add(310, 180, 200, 200)
With Diagram
.Name = "DiagrammName"
With .Chart
.ChartType = xlXYScatterLinesNoMarkers
.SetSourceData Source:=Range("$B$16:$D$19")
End With
End With
Das funktioniert auch bei einem PC mit Windows XP, und bei einem anderen mit Windows 7. Bei einem 3.PC mit Windows 7 funktioniert es bei User A, aber nicht bei User B!
Da User A Administrator-Rechte hat, User B aber nicht, dachte ich zunächst, dass dies die Ursache für den Fehler ist. Aber nach temporärer Vergabe von Admin-Rechten auch an User B tritt der Fehler weiterhin nur bei diesem User B auf.
Excel gibt als Fehlernummer: -2080081728 (840478c0)
und als Fehlerbeschreibung: "Die angegebene Dimension ist ungültig für den aktuellen Diagrammtyp." an.
Bei der Suche im Internet konnte ich bisher keine Erklärung für dieses seltsame Verhalten von Excel 2010 finden können.
Wer kennt dieses Problem und wie kann ich diesen Fehler vermeiden?
Viele Grüße,
Martin

Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Diagramm mit VBA erstellen
17.04.2013 08:54:36
Klaus
Hallo Martin,
wenn es auf PC-A läuft, aber auf PC-B nicht ... dann ist der Code warscheinlich ok. Zur Sicherheit nochmal nachgefragt: es haben aber beide PC's die gleiche Excel-Version?
Was ich dir anbieten kann, lad deine Datei mal hoch dann kann ich dir sagen ob sie bei mir läuft oder nicht. Und was ich machen würd: Bei User B einfach mal "auf Verdacht" Office komplett runter werfen und neu installieren.
Grüße,
Klaus M.vdT.

Anzeige
AW: Diagramm mit VBA erstellen
17.04.2013 23:42:53
Martin
Hallo Klaus,
vielen Dank für Deinen Beitrag.
Das Problem tritt beim selben (Windows 7)-PC auf, auf dem ich mehrere, gleichberechtigte User eingerichtet habe. Bei einem User läuft die VBA-Subroutine, bei einem anderen User nicht!
Es handelt sich also um die selbe Installation von Office 2010.
Ich habe zwar inzwischen eine andere Möglichkeit gefunden, ein Diagramm mit VBA anzulegen, aber diese ist weniger flexibel. Außerdem möchte ich gerne verstehen warum das Problem bei meiner ersten Lösung auftritt.
Zum beseren Verständnis füge ich ein Excelfile bei, das beide Versionen zum erstellen eines Diagramms per VBA demonstriert: https://www.herber.de/bbs/user/84922.xlsm
Ich hoffe, dass Du damit mein Problem besser verstehst und eine Lösung kennst.
Viele Grüße,
Martin

Anzeige
VBA-Diagramm-Experte - Beverly?
18.04.2013 11:14:31
Klaus
Hallo,
Bei einem User läuft die VBA-Subroutine, bei einem anderen User nicht!
das ist ja seltsam? Kann fast nur noch mit "Gremlins" erklärt werden ...
Bei mir laufen leider (?) beide Versionen korrekt, so dass ich den Fehler nicht nachvollziehen kann.
Aber das einzige, in dem "Dimensionen" vorkommen, ist wohl das hier:
With ActiveSheet.ChartObjects.Add(Left:=300, Width:=300, Top:=100, Height:=300)
Da kann ich nur raten: bei der einen Installation sind irgendwelche Einstellungen anders? Vielleicht ist in der Bibliothek des einen Users irgendein Verweis deaktiviert? Ich habe keine Ahnung ...
Noch ein Schuss ins Blaue:
.ChartType
wird ja in ProblemDiagramm angegeben, NACHDEM die Dimensionen des Diagramms festgelegt werden. Kommentiere ich ChartType aus, erhalte ich ein Balkendiagramm. Ganz wilde vermutung:
Die Standard-Einstellung für neue Diagramme ist "Balkendiagramm". Dein einer User hat als Standard-Einstellung eine andere Diagrammart (Blasen? Torten?), welche nicht mit 4 Dimensionen belegt werden darf - daher der Fehler.
Zum Austesten, lass mal beim Problem-User dieses Makro laufen (ChartType auskommentiert).
Sub DiagrammOK()    ' funktioniert immer!
Range("B8:C44").Select
ActiveSheet.Shapes.AddChart.Select
'ActiveChart.ChartType = xlXYScatterLinesNoMarkers
ActiveChart.SetSourceData Source:=Range("B8:C44")
ActiveChart.Parent.Name = "VBA_Diagramm1"
ActiveChart.Legend.Delete
End Sub

Wenn das so geänderte Makro bei OK und bei NOK Usern ein Balkendiagramm ergibt, weiss ich nicht weiter. Ergibt es unterschiedliche Diagramme, haben wir den schuldigen!
Hier im Herber Forum ist "Beverly" die Instanz für VBA-Diagramme. Ich hab mal ihren Namen in den Betreff geschrieben, vielleicht weiss sie rat!
Grüße,
Klaus M.vdT.

Anzeige
AW: VBA-Diagramm-Experte - Beverly?
20.04.2013 09:25:39
Martin
Hallo Klaus,
besten Dank. Das war ein sehr guter Hinweis. Bei allen Installationen, die ich testen konnte bekomme ich standardmäßig ebenfalls ein Balkendiagramm - nur bei dem Account, bei dem ich die Fehlermeldung erhalte wird ein "Oberflächendiagramm" erstellt!
Daraufhin habe ich bei diesem Account alle AddIns und Templates gelöscht, und das File "Normal.dotm" aus dem problemfreien Account des selben PCs übernommen.
Leider waren diese Maßnahmen ohne Erfolg. Bei dem User mit dem Diagrammfehler wird nach wie vor standardmäßig ein "Oberflächendiagramm" angelegt und das VBA Unterprogramm bricht mit Fehler ab.
Es muss also noch an anderer Stelle (im Userverzeichnis oder in der Registry) userspezifische Daten geben! Gibt es eine Stelle, wo ich noch suchen kann?
Viele Grüße,
Martin
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Diagramm mit VBA erstellen in Excel


Schritt-für-Schritt-Anleitung

  1. VBA-Editor öffnen: Drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Neues Modul erstellen: Klicke mit der rechten Maustaste auf "VBAProject (DeineDatei.xlsx)" und wähle "Einfügen" > "Modul".

  3. Code einfügen: Füge den folgenden Code ein, um ein Diagramm zu erstellen:

    Sub DiagrammErstellen()
       Dim WS As Worksheet
       Dim Diagram As ChartObject
       Set WS = ActiveSheet
       Set Diagram = WS.ChartObjects.Add(310, 180, 200, 200)
       With Diagram
           .Name = "DiagrammName"
           With .Chart
               .ChartType = xlXYScatterLinesNoMarkers
               .SetSourceData Source:=Range("$B$16:$D$19")
           End With
       End With
    End Sub
  4. Makro ausführen: Schließe den VBA-Editor und führe das Makro über Entwicklertools > Makros aus.


Häufige Fehler und Lösungen

  • Fehler: Ungültige Dimensionen
    Wenn du die Fehlermeldung "Die angegebene Dimension ist ungültig für den aktuellen Diagrammtyp" erhältst, kann dies an einer falschen Standarddiagrammart in Excel liegen. Überprüfe die Einstellungen des betroffenen Benutzers.

  • Lösung: Teste den Code mit einem anderen Diagrammtyp, indem du die Zeile .ChartType = xlXYScatterLinesNoMarkers auskommentierst. Dies könnte helfen, den Fehler einzugrenzen.


Alternative Methoden

  1. Diagramm manuell erstellen: Du kannst auch das Diagramm direkt in Excel erstellen und dann den VBA-Code verwenden, um es weiter anzupassen.

  2. Balkendiagramm-Template nutzen: Erstelle ein Balkendiagramm in Excel und speichere es als Template, das du später wiederverwenden kannst.

  3. Excel-Bordmittel: Verwende die integrierten Diagrammtools in Excel 2010, um Diagramme zu erstellen, ohne VBA zu verwenden.


Praktische Beispiele

  • Balkendiagramm erstellen:

    Sub BalkendiagrammErstellen()
       Dim WS As Worksheet
       Set WS = ActiveSheet
       WS.Shapes.AddChart.Chart.ChartType = xlBarClustered
       With ActiveChart
           .SetSourceData Source:=WS.Range("B1:B5")
           .Parent.Name = "Balkendiagramm"
       End With
    End Sub
  • Kreisdiagramm erstellen:

    Sub KreisdiagrammErstellen()
       Dim WS As Worksheet
       Set WS = ActiveSheet
       WS.Shapes.AddChart.Chart.ChartType = xlPie
       With ActiveChart
           .SetSourceData Source:=WS.Range("A1:A5")
           .Parent.Name = "Kreisdiagramm"
       End With
    End Sub

Tipps für Profis

  • Verwendung von Variablen: Definiere Variablen für die Diagrammgröße und -position, um den Code flexibler zu gestalten.

  • Fehlerbehandlung: Implementiere eine Fehlerbehandlung, um auf spezifische Probleme während der Diagrammerstellung zu reagieren.

  • Diagramm formatieren: Füge zusätzliche Formatierungsoptionen hinzu, um das Diagramm ansprechend zu gestalten. Nutze .Chart.SeriesCollection(1).Format.Fill.ForeColor.RGB für Farben.


FAQ: Häufige Fragen

1. Wie erstelle ich ein Diagramm in Excel ohne VBA?
Du kannst ein Diagramm erstellen, indem du die Daten markierst und dann auf Einfügen > Diagramm klickst. Wähle den gewünschten Diagrammtyp aus.

2. Wo finde ich Diagramm-Templates in Excel?
Diagramm-Templates findest du im Excel-Dialogfeld "Diagramm erstellen". Du kannst diese speichern und bei Bedarf wiederverwenden.

3. Welche Excel-Version benötige ich für VBA?
VBA ist in allen modernen Excel-Versionen verfügbar, einschließlich Excel 2010. Stelle sicher, dass die Entwicklertools aktiviert sind.

4. Was ist der Unterschied zwischen einem Balkendiagramm und einem Liniendiagramm?
Ein Balkendiagramm stellt Daten in vertikalen oder horizontalen Balken dar, während ein Liniendiagramm Datenpunkte mit Linien verbindet, die Veränderungen über einen Zeitraum darstellen.

5. Wie kann ich Diagramme in Excel automatisieren?
Durch das Erstellen von Makros in VBA kannst du den Prozess der Diagrammerstellung automatisieren und anpassen, um effizienter zu arbeiten.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige