Anzeige
Archiv - Navigation
480to484
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
480to484
480to484
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Gleiche Skalierung x- und y-Achse

Gleiche Skalierung x- und y-Achse
06.09.2004 15:48:48
Martin
Hallo,
folgendes Problem:
In einem bestehenden x-y-Diagramm (eingebettet) möchte ich quasi per Knopfdruck eine identische Skalierung von x- und y-Achse erreichen, und zwar dergestalt, dass unabhängig von der gewählten Größe des Diagramms die "Länge" einer Einheit auf x- und y-Achse jeweils gleich ist.
Mir ist klar, dass dies vermutlich nur mit VBA zu machen sein wird, dessen ich jedoch leider nicht mächtig bin...
Ich wäre daher für Lösungsansätze dankbar, die mir neben dem VBA-Code auch sagen würden, wie ich diesen ins Dokument reinfummeln muss damits läuft...
Vielen Dank schon mal im Voraus
Martin

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Gleiche Skalierung x- und y-Achse
09.09.2004 22:12:06
Björn
Hallo Martin,
möglicherweise hilft dir dieses Makro:

Sub Chart_anpassen()
xmin = ActiveChart.Axes(xlCategory).MinimumScale
xmax = ActiveChart.Axes(xlCategory).MaximumScale
ymin = ActiveChart.Axes(xlValue).MinimumScale
ymax = ActiveChart.Axes(xlValue).MaximumScale
If xmax - xmin > ymax - ymin Then
ymax = ymax + (xmax - xmin) - (ymax - ymin)
Else
xmax = xmax + (ymax - ymin) - (xmax - xmin)
End If
With ActiveChart.Axes(xlCategory)
.MinimumScale = xmin
.MaximumScale = xmax
End With
With ActiveChart.Axes(xlValue)
.MinimumScale = ymin
.MaximumScale = ymax
End With
End Sub

m das Makro in eine Datei einzubinden, Excel starten. Dann Alt + F11 drücken und den VBA-Editor starten. Dann im Menü "Einfügen" den Menüpunkt "Modul" wählen.
In das nun erscheinende leere Modul das obige Makro (von

Sub bis Sub) kopieren.
Das Fenster des VBA-Editors schließen.
Um das Makro anzuwenden nun auf ein x,y-Diagramm klicken und nach von Alt + F8 das Makro "Chart_anpassen" starten.
Gruß
Björn
P.S.: Willst Du das Makro behalten, so musst du die Datei speichern!

Anzeige
AW: Gleiche Skalierung x- und y-Achse
10.09.2004 10:38:58
Martin
Hallo Björn,
danke für die Antwort, habe das Makro gerade getestet und stelle fest, dass der im Diagramm abgebildete Wertebereich verändert wird und nun für x- und y-Achse identisch ist (z.B. x-Achse von -5 bis +10, y-Achse von -2 bis +13). Abhängig von der Größe des Diagrammfensters ist die auf dem Bildschirm dargestellte Länge einer Einheit allerdings nach wie vor unterschiedlich.
Ich kenne mich mit den entsprechden Befehlen und Anweisungen in VBA leider nicht aus, mein eigener Ansatz wäre es allerdings zu versuchen irgendwie die Länge einer Einheit auf der x-Achse zu ermitteln (abhängig von der Größe des Diagrammfensters), um dann die y-Achse entsprechend zu skalieren (oder umgekehrt). Ich kann leider nicht nachvollziehen, ob oder wie Dein Makro dies tut oder nicht.
Gruss
Martin
Anzeige
AW: Gleiche Skalierung x- und y-Achse
10.09.2004 21:10:34
Björn
Hallo Martin,
ich hatte schon gedacht, dass ich dir nicht helfen könnte, aber es scheint doch zu klappen. Versuche doch mal, ob dieses Makro macht, was du willst.

Sub Chart_anpassen()
xplot = ActiveChart.Axes(xlCategory).Width
yplot = ActiveChart.Axes(xlValue).Height
xmin = ActiveChart.Axes(xlCategory).MinimumScale
xmax = ActiveChart.Axes(xlCategory).MaximumScale
ymin = ActiveChart.Axes(xlValue).MinimumScale
ymax = ActiveChart.Axes(xlValue).MaximumScale
If (xmax - xmin) / xplot > (ymax - ymin) / yplot Then
yplot = (ymax - ymin) * xplot / (xmax - xmin)
Else
xplot = (xmax - xmin) * yplot / (ymax - ymin)
End If
ActiveChart.PlotArea.Width = xplot
ActiveChart.PlotArea.Height = yplot
End Sub

Gruß
Björn
Anzeige
AW: Gleiche Skalierung x- und y-Achse
13.09.2004 09:35:31
Martin
Hallo Björn,
nochmals Danke für die schnelle Antwort. Deine neue Version funktioniert schon besser als die vorige Variante. Allerdings tritt auch hier immer noch das Problem auf, dass Einheiten auf der x- und y-Achse unterschiedliche Längen haben.
Das Problem lösen würde m.E. ein Makro das folgendes tut:
- Ermittlung der aktuellen Größe des Diagrammfensters (Breite / Höhe)
- Anpassung der x-Achse an Fensterbreite (Diagrammfensterbreite wird komplett von x-Achse ausgefüllt, wobei min- und max-Wert erhalten bleiben)
- Skalierung der y-Achse dergestalt, dass die Länge einer Einheit identisch mit x-Achse ist (abhängig von der Form des Diagrammfensters verbleibt oben oder unten im Fenster "Luft", oder es kann nicht der komplette Wertebereich abgebildet werden)
Ich denke ich werde mich -ausgehend von Deinen guten Ideen- selber mal intensiv mit VBA beschäftigen und hoffentlich eine Lösung finden... Gibt es (abgesehen von diesem Forum hier) eine gute Anleitung dazu (Buch, Web, etc ) ?
So denn....
Gruss
Martin
Anzeige
AW: Gleiche Skalierung x- und y-Achse
13.09.2004 10:33:48
Björn
Hallo Martin,
das letzte Quentchen Genauigkeit bekomme ich wohl nicht hin. Das Problem ist, dass ich die Höhe der y-Achse und die Breite der x-Achse zwar auslesen, aber nicht festlegen kann, da die Eigenschaft schreibgeschützt ist.
Eine andere Variante, die ich versucht hatte war über die innere Begrenzung der PlotArea (Zeichnungsfläche) ans Ziel zu kommen, die exakt den Achsenlängen entsprechen. Auch hier bin ich am Schreibschutz der Eigenschaften InsideHeight und InsideWidth gescheitert.
Zum Schluß habe ich mich dann darauf beschränkt, die Eigenschaften Width und Height der PlotArea festzulegen. Du hast leider ganz richtig erkannt, dass es dadurch zu Ungenauigkeiten kommt. Die PlotArea beinhaltet in diesem Fall nämlich auch die Achsenbeschriftung.
Eine Idee wäre noch, dass man iterativ das Problem löst, indem man die Width und Height Eigenschaften so lange manipuliert, bis die Eigenschaften InsideHeight und InsideWidth passen.
Ich komme aber in den nächsten beiden Tagen definitiv nicht dazu, da ich auf Dienstreise gehe. Du kannst mir ja mal mitteilen, ob ich's danach noch mal probieren soll.
Bezüglich Literatur kann ich nur auf die Recherche verweisen, wahrscheinlich findest du da etwas. Ich habe mir VBA ohne Buch durch "Learning by doing" und "Try and error" angeeignet.
Gruß
Björn
Anzeige
AW: Gleiche Skalierung x- und y-Achse
13.09.2004 14:49:13
Martin
Hallo Björn,
vielen Dank für Deine intensive Unterstützung zu diesem Thema !
Wenn Du möchtest kannst Du natürlich gerne in Richtung iteraktiver Lösung "weiterforschen". Über eine Info wäre ich dann sehr dankbar !
Dennoch denke ich wie beschrieben weiterzumachen um mich selbst in die VBA Thematik einzuarbeiten ...
Gruss
Martin

304 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige