Hallo Zusammen,
ich bin gerade dabei eine Darstellung für meine Bachelorarbeit in Excel zu erarbeiten und stehe nun vor einen Problem.
Meine Excel-Datei soll Daten über eine Eingabemaske aufnehmen, über Konsolidierungen auswerten und in Form einer Überleitungschaukel (Wasserfalldiagramm) darstellen.
So weit so gut. Daten können eingegeben werden, Grafiken werden automatisch erstellt.
Die Y-Achse wird einen, je nach Dateneingabe, Datenbereich von 100 bis 10000 abdecken müssen, je nachdem wo der Startwert eben anfängt. Jetzt ist das natürlich äußerst schlecht, wenn ich Teilergebnisse von 10 Einheiten habe, die auf der Y-Achse dargestellt werden sollen (Y-Achse ist ca. 15 cm hoch).
Deswegen habe ich mir folgendes überlegt. Ich nehme den Anfangswert und skaliere die Grafik knapp unter den Startwert, sodass ich die 15 cm Y-Achse vollständig für meine Überleitungsschaukel benutzen kann und nicht mehr den vollständigen Startwert anzeigen lasse. Klappt super!
Wenn jetzt jemand seine Darstellung haben möchte, will der ja nicht extra jedes mal die doofe Y-Achse skalieren. Also habe ich mir gedacht "mach ich das doch automatisch über VBA". Makro-aufgezeichnet, ausgeführt und einen Button auf die erste Seite gepackt. Läuft super! - auf der ersten Grafik -
Nun zu meinem Problem:
Es werden zwei Datengrößen gegenübergestellt. Um das auch direkt ausdrucken zu können, habe ich die erste Grafik in Excel 2007 in ein eigenes Worksheet verschoben. Die zweite Grafik habe ich auch dort rein verschoben. Dadurch habe ich sozusagen eine Grafik in einer Grafik.
Wenn ich mir jetzt ein Marko aufzeichnen, dann wird mir für die Grafik in der Grafik eine Bezeichnung im Quelltext angegeben, die auch mit der Bezeichnung in Excel Register Layout/Diagrammname übereinstimmt.
Jedes mal, wenn ich jedoch die Grafik in der Grafik über VBA skalieren lassen möchte (ohne sie vorher ausgewählt zu haben), wird mir ein Fehler bei der Datenbezeichnung angezeigt. Der Befehl an dem es stock heißt:
"ActiveSheet.ChartObjects("Diagramm 8").Activate" --> "Diagramm 8" ist - wie Ihr schon richtig vermutet- die Grafik in der Grafik.
Mein Lösungsansatz:
Wenn Excel den Namen nicht mag verknüpfe ich eben die zweite Graifk mit einem Makro, das nur noch folgenden Quellcode besitzt :
" ActiveChart.Axes(xlValue).MinimumScale = Worksheets("Darstellungsvorbereitung").Cells(29, 2).Value"
Das funktioniert. AAAber es funktioniert nicht, wenn ich die erste Tabelle mit dem commandButton aktualisieren lasse und von dort aus das Makro aufrufen lasse, das mit der zweiten Grafik verbunden ist.
Frage:
Kann mir jemand sagen, was ich falsch mache? Kennt jemand eine Möglichkeit, um in VBA eine Grafik in einer Grafik so anzusprechen, dass man die Grafik skalieren kann?
Vielen Dank schon einmal für die Hilfe!
Gruß,
Marc
|