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

Forumthread: Dynamisieren - Gleiches Diagramm für alle Blätter

Dynamisieren - Gleiches Diagramm für alle Blätter
03.08.2008 05:21:00
Matthias
Hallo,
ich habe in einer Arbeitsmappe mehrere Blätter und ich möchte für jedes Blatt ein Diagramm erstellen.
Das Diagramm ist eigentlich immer dasselbe, nur der Inhalt ändert sich halt, abhängig von dem jeweiligen Blatt.
Mit dem Makrorekorder habe ich die Erstellung eines Diagrammes aufgezeichnet und möchte das erhaltene Makro soweit verallgemeinern, daß es mit jedem Sheet arbeiten soll:
Aus

ActiveChart.SetSourceData Source:=Sheets("IDC_2").Range("A2:F520"), PlotBy _
:=xlColumns


habe ich gemacht:


ActiveChart.SetSourceData Source:=ActiveSheet.Range("A2:F520"), PlotBy _
:=xlColumns


Damit erhalte ich aber nur die Fehlermeldung "Objekt unterstützt diese Eigenschaft oder Methode nicht".
Was mache ich falsch ?
Bei folgender Aktion soll auch immer der Name des aktuellen Sheets anstatt "IDC_2" verwendet werden, was muß ich hier ändern ? (erstellte Textbox besitzt Inhalt wie in Zelle A1 des aktuellen Sheets)


With ActiveChart.TextBoxes.Add(359, 220, 127, 17)
.Select
.AutoSize = True
.Formula = "=IDC_2!$A$1"


Zum Schluß sollte das Diagramm immer den Namen des aktuellen Sheets erhalten, ergänzt um die Buchstabenfolge "Dia" zur Unterscheidung. Was muß ich dazu im Makro einfügen ?
Vielen Dank, Matthias

Anzeige

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Warum Makro
03.08.2008 12:24:31
Daniel
Hi
wenn die Blätter und das Diagramm immer gleich sind, dann würde ich folgendermassen vorgehen:
1. ein zusammenfassungsblatt erstellen
das zusammenfassungsblatt holt sich die Werte aus den einzelnen Blättern nach Vorgabe über die Indirekt-Formel. Damit kann man einfach auswählen, welches Blatt im Zusammenfassungblatt angezeigt werden soll
2. nur ein Diagramm für das zusammenfassungsblatt erstellen.
3. ein paar Formular-Felder einfügen, um die Blattauswahl zu vereinfachen.
Funktioniert recht einfach ohne Makro nur mit Formeln.
schau dir mal das Beispiel an:
https://www.herber.de/bbs/user/54303.xls
hauptvorteil ist, wenn du mal im Diagramm was ändern musst, machst du das nur einmal und nicht für x-Diagramme und die verschiedenen Diagramme sehen immer exakt gleich aus.
Gruß, Daniel

Anzeige
AW: Warum Makro - jetzt mit richtiger Datei
03.08.2008 14:21:56
Matthias
Hallo,
danke für die Antwort, aber ich würde es doch gerne mit dem Makro lösen (zumindest heute, bis heute abend muß ich es fertig haben und da möchte ich mich ungerne woanders einarbeiten).
Hat niemand eine Idee, woran es scheitert ?

Anzeige
AW: Warum Makro - jetzt mit richtiger Datei
03.08.2008 14:45:00
Daniel
Hi
dann lad doch mal deine Datei hoch, das macht die Sache einfacher.
Gruß, Daniel

AW: Warum Makro - jetzt mit richtiger Datei
03.08.2008 15:17:13
Matthias
Hallo Daniel,
danke für Deine Hilfe. Die Datei liegt jetzt auf
https://www.herber.de/bbs/user/54306.xls
Wenn ich im Reiter "SPTA_1" bin, soll durch Aufruf von Makro "Makro3" oder "Makro4" ein Diagramm erzeugt werden.

Anzeige
AW: Warum Makro - jetzt mit richtiger Datei
03.08.2008 16:08:00
Daniel
Hallo
ich hab mir jetzt mal das Makro 4 angeschaut.
das Problem liegt darin, daß du dich auf das Activesheet beziehst.
da du aber ein neues Tabellenblatt für die Charts erstellt hast, gibt es kein ActiveSheet in diesem Sinne mehr, denn das zum Zeitpunkt der Befehlsausführung aktive Sheet ist das Diagrammsheet.
Lösung:
du musst in einer Objektvariablen das aktive Sheet speichern und im Code dann diese Objektvariable einsetzen.
wo du im Code den SheetNamen direkt eingegeben hast, musst du dann die Eigenschaft "Namen" der Objektvariablen abfragen und einfügen.
im Code sieht das dann so aus (ich zeigs nur mal für die ersten Zeilen, für weiter kannst du es dann ja selber einfügen:

Sub Makro4()
' Makro4 Makro
' Makro am 03.08.2008 von MB aufgezeichnet
Dim sh As Worksheet
Set sh = ActiveSheet
'
Charts.Add
ActiveChart.ChartType = xlXYScatterSmoothNoMarkers
ActiveChart.SetSourceData Source:=sh.Range("A1:F520"), PlotBy _
:=xlColumns
ActiveChart.SeriesCollection(1).Name = "=" & sh.Name & "!R2C2:R2C2"
ActiveChart.SeriesCollection(2).Name = "=" & sh.Name & "!R2C3:R2C3"
End Sub


Gruß, Daniel

Anzeige
AW: Warum Makro - jetzt mit richtiger Datei
03.08.2008 16:32:00
Matthias
Hallo Daniel,
vielen, vielen Dank ! Nachdem ich mir erstmal die ganzen Verknüpfungen in "=" & sh.Name & "!R2C2:R2C2" auf der Zunge habe zergehen lassen, hat es geklappt !

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Gleiches Diagramm für alle Blätter dynamisieren


Schritt-für-Schritt-Anleitung

  1. Vorbereitung der Blätter: Stelle sicher, dass alle Blätter in deiner Excel-Arbeitsmappe die gleichen Datenstrukturen aufweisen, um ein Diagramm in Excel zu erstellen, das für jedes Blatt funktioniert.

  2. Makro aufzeichnen: Nutze den Makrorekorder, um den Prozess der Diagrammerstellung aufzuzeichnen:

    • Erstelle das Diagramm einmal manuell.
    • Achte darauf, dass du beim Aufzeichnen die Datenquelle für das Diagramm entsprechend einstellst.
  3. Makro anpassen: Du musst den aufgezeichneten VBA-Code anpassen, damit er auf jedes aktive Blatt anwendbar ist. Beispiel für den Code:

    Sub ErstelleDiagramm()
       Dim sh As Worksheet
       Set sh = ActiveSheet
       Charts.Add
       ActiveChart.ChartType = xlXYScatterSmoothNoMarkers
       ActiveChart.SetSourceData Source:=sh.Range("A1:F520"), PlotBy:=xlColumns
       ActiveChart.SeriesCollection(1).Name = "=" & sh.Name & "!R2C2:R2C2"
       ActiveChart.SeriesCollection(2).Name = "=" & sh.Name & "!R2C3:R2C3"
    End Sub
  4. Diagramm anpassen: Füge eine Textbox hinzu, um den Namen des aktuellen Blattes im Diagramm darzustellen. Der Code könnte so aussehen:

    With ActiveChart.TextBoxes.Add(359, 220, 127, 17)
       .AutoSize = True
       .Formula = "=" & sh.Name & "!$A$1"
    End With
  5. Diagramm benennen: Setze den Namen des Diagramms, indem du ActiveChart.Name = sh.Name & "Dia" hinzufügst.


Häufige Fehler und Lösungen

  • Fehlermeldung "Objekt unterstützt diese Eigenschaft oder Methode nicht": Stelle sicher, dass du in deinem VBA-Code das richtige ActiveSheet verwendest. Das Diagramm muss immer auf das aktuelle Blatt zugreifen.

  • Diagramm nicht sichtbar: Überprüfe die Sichtbarkeit der Blätter, wenn du excel beim öffnen immer gleiches tabellenblatt ohne makro einstellst. Es kann sein, dass das Diagramm in einem nicht sichtbaren Blatt erstellt wird.


Alternative Methoden

Falls du nicht mit Makros arbeiten möchtest, kannst du auch eine Zusammenfassungsblatt-Methode verwenden:

  1. Erstelle ein neues Blatt, das als Zusammenfassung dient.
  2. Nutze die INDIREKT-Formel, um die Daten aus den einzelnen Blättern zu referenzieren.
  3. Erstelle nur ein Diagramm in diesem Zusammenfassungsblatt, das die Daten dynamisch anzeigt.

Diese Methode ist oft einfacher und erfordert keine Programmierung.


Praktische Beispiele

  • Beispiel für ein Diagramm aus mehreren Blättern: Wenn du mehrere Verkaufsdatenblätter hast, kannst du ein Diagramm erstellen, das die Gesamtverkäufe über alle Blätter hinweg anzeigt.

  • Diagramm als neues Blatt einfügen: Du kannst das Diagramm auch auf einem neuen Blatt anlegen, indem du Charts.Add verwendest und es dann entsprechend anpasst.


Tipps für Profis

  • Excel Bildlaufleiste einstellen: Optimiere deine Excel-Dokumente, indem du die Bildlaufleisten anpasst, damit du schneller zwischen Blättern navigieren kannst, wenn du viele Diagramme hast.

  • Wiederverwendbare Makros: Schreibe deine Makros so, dass sie flexibel sind und mit verschiedenen Datensätzen arbeiten können, um den Aufwand in der Zukunft zu minimieren.


FAQ: Häufige Fragen

1. Kann ich ein Diagramm in Excel erstellen, das automatisch aktualisiert wird?
Ja, wenn du die Datenstruktur gleich hältst und die Diagramme mit den gleichen Formeln verknüpfst, aktualisieren sich die Diagramme automatisch.

2. Wie kann ich die Darstellung des Diagramms ändern?
Du kannst den Typ des Diagramms in deinem VBA-Code anpassen, z.B. ActiveChart.ChartType = xlColumnClustered, um ein Säulendiagramm zu erstellen.

3. Ist es möglich, ein Diagramm aus mehreren Tabellen zu erstellen?
Ja, indem du die INDIREKT-Funktion oder VBA nutzt, um Daten aus mehreren Blättern in dein Diagramm zu integrieren.

4. Was ist der Vorteil eines Makros gegenüber Formeln?
Makros ermöglichen eine Automatisierung der Diagrammerstellung und können komplexe Aufgaben in einem Schritt ausführen, während Formeln manuelle Eingaben erfordern.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige