Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Größe der Diagrammfläche per VBA einstellen

2,433 views
Skip to first unread message

Jürgen Weithöner

unread,
Dec 1, 2011, 1:22:13 PM12/1/11
to
Hallo,

wie kann ich die Größe der Diagrammfläche per VBA ansprechen und ändern?
Achtung, ich meine die Innere Fläche des eigentlichen Diagrammes, die durch die Achsen aufgespannt wird. Ich meine nicht die gesamte Diagrammfläche.

Hier nochmal eine Abbildung:
https://www.dropbox.com/s/8uqmam6jk0oxl2s/plot_area.png
Der ROTE Bereich ist gemeint

Gruß
Jürgen

Marc Wollersheim

unread,
Dec 1, 2011, 2:10:38 PM12/1/11
to
Am 01.12.2011 19:22, schrieb J�rgen Weith�ner:
> Hallo,
>
> wie kann ich die Gr��e der Diagrammfl�che per VBA ansprechen und �ndern?
> Achtung, ich meine die Innere Fl�che des eigentlichen Diagrammes, die durch die Achsen aufgespannt wird. Ich meine nicht die gesamte Diagrammfl�che.
>
> Hier nochmal eine Abbildung:
> https://www.dropbox.com/s/8uqmam6jk0oxl2s/plot_area.png
> Der ROTE Bereich ist gemeint
>
> Gru�
> J�rgen

Hallo J�rgen,

kopiere folgenden Code in ein neues Modul und �ndere ggf. den
Tabellennamen (im Beispiel "Tabelle1") und ggf. den Namen des Diagramms ab:
Getestet mit Excel 2007. (Hier w�re eine Angabe von Dir sinnvoll gewesen...)

Gru�
Marc
PS: Feedback erw�nscht

Option Explicit 'Variablendeklaration erzwingen
'**Code kann in ein Modul hinterlegt werden,mw
Sub Zeichnungsfl�che_�ndern()

Dim wks As Worksheet
Set wks = Worksheets("Tabelle1") ' hier Tabellenamen �ndern

With wks.ChartObjects("Diagramm 1")
ActiveChart.PlotArea.Width = 130 'Breite in Punkten
ActiveChart.PlotArea.Height = 130 'H�he in Punkten
End With

'Aufr�umen
Set wks = Nothing
End Sub

Marc Wollersheim

unread,
Dec 1, 2011, 2:59:22 PM12/1/11
to
Am 01.12.2011 20:10, schrieb Marc Wollersheim:
> Am 01.12.2011 19:22, schrieb Jürgen Weithöner:
>> Hallo,
>>
>> wie kann ich die Größe der Diagrammfläche per VBA ansprechen und ändern?
>> Achtung, ich meine die Innere Fläche des eigentlichen Diagrammes, die
>> durch die Achsen aufgespannt wird. Ich meine nicht die gesamte
>> Diagrammfläche.
>>
>> Hier nochmal eine Abbildung:
>> https://www.dropbox.com/s/8uqmam6jk0oxl2s/plot_area.png
>> Der ROTE Bereich ist gemeint
>>
>> Gruß
>> Jürgen
>
> Hallo Jürgen,
>
> kopiere folgenden Code in ein neues Modul und ändere ggf. den
> Tabellennamen (im Beispiel "Tabelle1") und ggf. den Namen des Diagramms ab:
> Getestet mit Excel 2007. (Hier wäre eine Angabe von Dir sinnvoll
> gewesen...)
>
> Gruß
> Marc
> PS: Feedback erwünscht
>
> Option Explicit 'Variablendeklaration erzwingen
> '**Code kann in ein Modul hinterlegt werden,mw
> Sub Zeichnungsfläche_ändern()
>
> Dim wks As Worksheet
> Set wks = Worksheets("Tabelle1") ' hier Tabellenamen ändern
>
> With wks.ChartObjects("Diagramm 1")
> ActiveChart.PlotArea.Width = 130 'Breite in Punkten
> ActiveChart.PlotArea.Height = 130 'Höhe in Punkten
> End With
>
> 'Aufräumen
> Set wks = Nothing
> End Sub

Hallo Jürgen,

hatte einen kleinen "Fehler", so dass der Code nur funktioniert, wenn
das Diagramm markiert ist, das macht natürlich keinen Sinn. Anbei die
korrigierte Fassung:

Option Explicit 'Variablendeklaration erzwingen
'**Code kann in ein Modul hinterlegt werden,mw
Sub Zeichnungsfläche_ändern()

Dim wks As Worksheet
Set wks = Worksheets("Tabelle1") ' hier Tabellenamen ändern

With wks.ChartObjects("Diagramm 1").Chart
.PlotArea.Width = 140 'Breite in Punkten
.PlotArea.Height = 140 'Höhe in Punkten
End With

'Aufräumen

Jürgen Weithöner

unread,
Dec 2, 2011, 7:12:54 PM12/2/11
to

Hallo Marc,

Danke! Leider ist es noch nicht ganz das richtige. Die PlotArea ist
offensichtlich der Bereich inkl. Achsenbeschriftungen.
Ich habe nochmal ein Bild gemacht:
https://dl.dropbox.com/s/t1xl90na292twou/plot_area2.png

Gruß
Juergen

Marc Wollersheim

unread,
Dec 3, 2011, 4:27:14 AM12/3/11
to
Hallo Jürgen,

das stimmt. Du meinst die Bodenfläche. Diese wird definiert durch
InsideWidth und InsideHeight, ist in Excel aber schreibgeschützt. Man
kann nur indirekt damit rumspielen, siehe Seite 512 auf
http://kofler.info/uploads/pdf/xl2003-kap10.pdf

Allerdings führt das auch nur zu einer Annäherung.

Du könntest nur versuchen, Deine verwendeten Diagramme auf die gleiche
Skala zu beziehen, und wenn das nicht geht, muss du mit Width und Height
in meinem Codesolange rumspielen pro Diagramm, bis es augenscheinlich passt.

Wenn Du es ganz genau brauchst, z.B. in wissenschaftlichen Arbeiten,

dann kommst du hier um Latex mit z.B. Tikz/pgfplots leider nicht herum.
http://www.texample.net/tikz/examples/tag/plots/

Gruss

Marc

Jürgen Weithöner

unread,
Dec 3, 2011, 8:04:12 AM12/3/11
to
Hallo Marc,

die simple Lösung a la Kofler funktioniert millimetergenau, super.
Ich habe den Code noch ergänzt, so dass man echte Zentimeter vorgeben
kann.

--
Option Explicit 'Force variable declaration
Sub SetInsidePlotArea()
Dim wks As Worksheet
Dim Delta
Dim WidthInCm
Dim HeightInCm
WidthInCm = 2 'choose dimensions in [cm]
HeightInCm = 3 'choose dimensions in [cm]
Set wks = Worksheets("Tabelle1") ' use your table name
With wks.ChartObjects("Diagramm 2").Chart ' use your chart name
Delta = .PlotArea.Width - .PlotArea.InsideWidth
.PlotArea.Width = WidthInCm * 28.346 + Delta ' 28.346 = points/
cm
Delta = .PlotArea.Height - .PlotArea.InsideHeight
.PlotArea.Height = HeightInCm * 28.346 + Delta
End With
Set wks = Nothing
End Sub
--
Das Buch vom Kofler wandert auf den Wunschzettel....


Gruß
Juergen


Marc Wollersheim

unread,
Dec 3, 2011, 9:10:45 AM12/3/11
to
Hallo Jürgen,

das ist schön, dass du damit weiterkommst. Behalte aber im Hinterkopf,
dass das nicht immer funktioniert und abhängig von Deinen
Skalen(-beschriftungsbreiten) ist.

Gruß
Marc
0 new messages