Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1204to1208
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
Inhaltsverzeichnis

Kuchengrafik per VBA

Kuchengrafik per VBA
TommiH
Hallo,
ich bin auf der Suche nach Infos zur 'einfachen' Kuchengrafikerstellung (per VBA). Ich habe mal etwas mit dem Makrorecorder experimentiert, aber da fehlen noch ein paar Sachen.
Prinzipiell habe ich einfach in Zelle A1 den Titel der Kuchengrafik, in Zelle A8 und A9 z.B. Ja und Nein stehen (als Beispiel) und in den Zellen B8 und B9 die Werte für Ja und Nein. (Teilweise gibts auch Gut/Mittel/Schlecht oder ähnliches - aber das geht ja dann alles analog)
Damit würde ich nun gerne einfach (per VBA) eine Kuchengrafik (xl3DPieExploded) generieren, auf Höhe des Titels (A1) rechts ab Spalte F - und in der 'Höhe' A1-A9 - und eben mit dem Titel als Überschrift, und die 2 Ausprägungen (Ja/Nein) inkl. der Werte dafür als Betextung der Grafik (keine Legende).
Geht das so einfach?
Und wie/wo gibt man den Namen des Charts an? Mit dem Makrorecorder hat Excel anscheinend den Namen "Diagramm 3" vergeben, aber wie und warum weiss ich nicht...
Und gibts da irgendwo Infos zu, mit der Hilfe bin ich irgendwie nicht weitergekommen, was die verschiedenen Einstellungen einer Kuchengrafik angeht :(
Tommi

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Kuchengrafik per VBA
24.03.2011 13:04:13
Beverly
Hi, Tommi,
Sub DiaErastellen()
Dim chrDia As Chart
Set chrDia = ActiveSheet.ChartObjects.Add(Columns(7).Left, 0, 350, 200).Chart
With chrDia
.ChartType = xl3DPieExploded
.HasLegend = False
.SetSourceData Source:=Range("Tabelle1!$A$8:$B$9")
.SetElement (msoElementChartTitleAboveChart)
.ChartTitle.Caption = Range("A1")
.SeriesCollection(1).ApplyDataLabels
End With
Set chrDia = Nothing
End Sub

Die Namen dee´r Diagramme vergibt Excel automatisch in Abhängigkeit davon, wie viele Diagramm in der laufenden Sitzung bereits erstellt wurden.


Anzeige
AW: Kuchengrafik per VBA
24.03.2011 13:22:12
TommiH
Hallo Karin,
hm, ich habe das Script mal als Makro angelegt und mit F8 durchlaufen lassen. Vorher habe ich noch Tabelle1 in B-1 angepasst (das ist mein zu nutzendes Arbeitsblatt).
Wenn ich aber in die Zeile .SourceData komme, dann kommt ein 'Die Methode 'Range' für das Object '_Global' ist fehlgeschlagen'.
Tommi
AW: Kuchengrafik per VBA
24.03.2011 13:29:27
TommiH
Hallo Karin,
ah, ich habe das mal aufgesplittet in Sheets("B-1").Range("$A...") damit hat es geklappt! Super
Nun habe ich aber noch 2 Punkte, wenn ich das nicht ganz oben hinpappen will, also nicht in Zeile 0 sondern erst in Zeile 3, dann kann ich etwas in der Art...
.Add(Columns(6).Left, Rows(3).Left, 0, 350) schreiben?
Und, wie bekomme ich es noch hin, das er Ja/Nein mit aufnimmt, also nicht nur die Werte, im Moment erscheinen nur die Werte ansich.
Ansonsten aber schon genau das was ich wollte !
Tommi
Anzeige
AW: Kuchengrafik per VBA
24.03.2011 13:58:51
Beverly
Hi Tommi,
nicht Rows(3).Left sondern Rows(3).Top, denn Left = Links und Top = Oben
Ergänze diese Codezeile:
      .SeriesCollection(1).DataLabels.ShowCategoryName = True



AW: Kuchengrafik per VBA
24.03.2011 14:42:43
TommiH
Hallo Karin,
super - damit ist alles gelöst, bis auf ein neu aufgetauchtes Problem. Kann man das definieren oder muss ich dazu die Daten (temporär) umkopieren.
Und zwar ist die Beschreibung in Spalte A die Daten stehen aber eigentlich in Spalte C (in Spalte B steht noch etwas anderes, was aber nichts damit zu tun hat...
Kann man da irgendwie gezielt die Spalten A + C für Beschreibung + Daten angeben?
Tommi
Anzeige
AW: Kuchengrafik per VBA
24.03.2011 15:01:37
Beverly
Hi Tommi,
benutze eine Hilfsspalte, in der du beide Zellinhalte per Formel zusammenfügst.


AW: Kuchengrafik per VBA
24.03.2011 15:15:15
TommiH
Hallo Karin,
ok, es geht also nicht, das ich sagen kann Spalte A5-A6 ist die Beschreibung und C5-C6 stehen die dazugehörigen Daten.
Umkopieren kann ich das schon direkt vor der Charterstellung, das ist nicht das Problem, dachte nur man könne das direkt definieren wo Beschreibung/Daten herkommen...
Verflixt, nun habe ich, nachdem ich das mal umgesetzt habe, festgestellt, das die DiagrammÜberschriften manchmal etwas zu gross geraten sind und mit ... abgeschnitten werden, gibt es da nicht irgendwo eine Übersicht, wo man alle Diagrammrelevanten Parameter aufgelistet hat?
Ich vermute mal das das irgendwie mit .ChartTitel.text = Autoscale oder .ChartTitel.Autoscale = True oder so geht, aber wie die genaue Syntax ist ;)
Tommi
Anzeige
AW: Kuchengrafik per VBA
24.03.2011 15:54:54
TommiH
Mist, nun habe ich es mit einer temporären Spalte probiert, also die Daten von Spalte B in F umkopiert, dann von C in B (temporär) kopiert.
Dann das Chart generiert - wenn ich nun aber wieder die Daten von Spalte F zurückkopiere und die Spalte F lösche, dann ändert Excel ja das Chart direkt mit - weil das wohl dynamisch angepasst wird - das ist manchmal zwar wohl sinnvoll, im Moment aber leider nicht gewünscht :(
Hm, ob man die Aktualisierung irgendwie ausschalten kann?
Tommi
AW: Kuchengrafik per VBA
24.03.2011 16:59:10
Beverly
Hi Tommi,
nicht umkopieren und dann wieder löschen, sondern per Formel zusammenfügen: =A1&" "&C1 und diese Spalte für das Diagramm benutzen.
Verknüpfe den Diagrammtitel mit einer Zelle, dann sollte er sich in der Größe eigentlich automatisch anpassen:
.ChartTitle.Caption = "=Tabelle1!A1"


Anzeige
AW: Kuchengrafik per VBA
24.03.2011 17:09:39
TommiH
Hallo Karin,
hm, das mit Zusammenfügen verstehe ich zwar vom Prinzip, aber dann muss man dafür ja trotzdem eine Spalte benutzen (da da später noch ein Ausdruck laufen soll ist das etwas kompliziert, oder ich verberge die Spalte,hm, das könnte gehen, aber geht es eine verborgenen Spalte als Referenz für ein Diagramm zu nutzen?) - das andere Problem wäre, das die Beschreibung manchmal aus 'Sehr gut (1)' besteht, ich denke das geht das mit dem A1&" "&C1 vermutlich schief, oder? Oder ich probiere mal etwas wie A1&";"&C1?
Das mit der Größe habe ich nun mit einem
.ChartTitle.Characters.Font.Size = 14
in den Griff bekommen, noch kleiner sollte es eigentlich nicht werden, dann lieber mit ... abschneiden.
Tommi
Anzeige
AW: Kuchengrafik per VBA
24.03.2011 17:36:18
TommiH
Hm,
wenn ich in eine Hilfsspalte ein Cells(y, 9) = Cells(y,1) & " " & Cells(y, 3) mache und Cells(y+1, 9) = Cells(y+1,1) & " " & Cells(y+1, 3) und dann später ein
.SetSourceData Source:=Sheets(q).Range(Cells(y, 9), Cells(y + 1, 9))
nutze, dann klappt es nicht - der Diagrammtitel wird mit dem Wert aus Cells(y,9) ersetzt, ein Diagramm kommt gar nicht heraus.
Jetzt habe ich es einfach mit 2 Hilfsspalten HINTER dem jeweiligen Chart gelöst, da stören die Daten nicht, gedruckt wird eh nur der vordere Teil, so sollte es solala gehen - Ausblenden geht aber anscheinend auch nicht, da Excel dann die Basis für den Chart entzogen wird... (zumindest Spaltenbreite 0,1 geht - 0,0 auch nicht)
Tommi
Anzeige
AW: Kuchengrafik per VBA
24.03.2011 18:58:00
Beverly
Hi Tommi,
mache einen Rechtsklick auf das Diagramm -&gt Datenquelle auswählen. Dort hast du links unten einen Schalter "augeblendete und leere Zellen" -&gt aktiviere "Daten in ausgeblendeten Zeilen und Spalten anzeigen".


Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige