Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1056to1060
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

Schleife zur Diagrammerstellung

Schleife zur Diagrammerstellung
09.03.2009 13:41:16
Ann-Kathrin
Hallo zusammen,
ich hänge jetzt seit Tagen an einem Problem... und zwar habe ich eine Tabelle, in der in jeder Spalte ein neues Fahrzeug steht, und in den Zeilen der jeweiligen Spalte immer die Kennwerte zum Fahrzeug. Nun brauch ich ein VBA-Script, dass mir automatisch für jede Spalte, die mit inhalt befüllt ist ein Tortendiagramm ausleitet, die Inhalte für das Diagramm sollen die Kennzahlen der jeweiligen Zeile sein.
Soviel habe ich bisher:

Sub Diagramme()
Dim Spalte As Integer
Const Maxspalte As Integer = 100
Dim Arbeitsblatt As Worksheet
For Spalte = 1 To Maxspalte
Set Arbeitsblatt = ThisWorkbook.ActiveSheet
Charts.Add
ActiveChart.ChartType = xlPie
ActiveChart.SetSourceData Source:=Sheets("Daten 2").Range(Worksheets("Daten 2").Cells(5,  _
Spalte), Worksheets("Daten 2").Cells(7, Spalte)), PlotBy _
:=xlColumns
ActiveChart.SeriesCollection(1).Name = "='Daten 2'!R1C2:R2C2"
ActiveChart.Location Where:=xlLocationAsObject, Name:="Daten 2"
With ActiveChart
.HasTitle = True
.ChartTitle.Characters.Text = ActiveSheet.Range(Sheets("Daten 2").Cells(1, Spalte),  _
Sheets("Daten 2").Cells(2, Spalte))
End With
ActiveWindow.Visible = False
Windows("Diagramm.xls").Activate
Next Spalte
End Sub


jetzt habe ich das problem, dass es mir für jede Spalte im Arbeitsblatt ein Diagramm erstellt. Kann mir jemand sagen, wo mein Fehler ist?
Schon mal herzlichen Danke für eure Hilfe,
Ann-Kathrin

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Schleife zur Diagrammerstellung
09.03.2009 13:45:14
Renee
Hi Ann-Kathrin,
Worin liegt genau dein Problem?
Das leere Spalten übersprungen werden ? Wann ist eine Spalte leer ?
Hast du eine kleine Beispielmappe ?
GreetZ Renée
AW: Schleife zur Diagrammerstellung
09.03.2009 14:03:09
Ann-Kathrin
Hallo Renèe,
mein Problem ist, dass er mir für jede Spalte, bis die Maxspalte erreicht ist, ein Diagramm erstellt, selbst wenn die Spalte leer ist. Ich hingegen möchte nur dann ein Diagramm, wenn sich auch Daten in der Spalte befinden.
Gibt es außerdem noch eine Möglichkeit, dass ich die Diagramme nebeneinander anordnen kann, wenn sie erstellt werden?
Leider kann ich die Mappe nicht zur Verfügung stellen, weil es sich um vertrauliche Daten handelt.
Viele Grüße,
Ann-Kathrin
Anzeige
AW: Schleife zur Diagrammerstellung
09.03.2009 14:28:06
Renee
Hi Ann-Kathrin,
Du musst auch nicht die Originalmappe zur Verfügung stellen!
Eine anonymisierte Mappe (fiktive Daten) mit gleichem Struktur Aufbau und etwa gleicher Spaltenbreite, Diagrammgrösse und 2-3 Spalten (Beispiele für Daten) würden genügen.
Für das Problem der leeren Spalten, könnte dieser Code funktionieren:

Sub Diagramme()
Dim Spalte As Integer
Const Maxspalte As Integer = 100
Spalte = 1
Do While Worksheets("Daten 2").Cells(5, Spalte)  ""
Charts.Add
ActiveChart.ChartType = xlPie
ActiveChart.SetSourceData Source:=Sheets("Daten 2") _
.Range(Worksheets("Daten 2").Cells(5, Spalte), _
Worksheets("Daten 2").Cells(7, Spalte)), PlotBy:=xlColumns
ActiveChart.SeriesCollection(1).Name = "='Daten 2'!R1C2:R2C2"
ActiveChart.Location Where:=xlLocationAsObject, Name:="Daten 2"
With ActiveChart
.HasTitle = True
.ChartTitle.Characters.Text = ActiveSheet.Cells(1, Spalte) & _
ActiveSheet.Cells(2, Spalte)
End With
Spalte = Spalte + 1
Loop
ActiveWindow.Visible = False
Windows("Diagramm.xls").Activate
End Sub


Für das Problem des Nebeneinander der Diagramme, müsste ich wie gesagt, wissen wie gross die Diagramme sind und würde eine Beispielmappe helfen. Das Hauptproblem ist, wie bringst du 100 Diagramme nebeneinander, ohne das du die Tabellenbreite überschreitest?
GreetZ Renée
Anzeige
AW: Schleife zur Diagrammerstellung
09.03.2009 15:32:22
Beverly
Hi Ann-Kathrin,

Sub diagramme_erstellen()
Dim inSpalte As Integer
Dim chDiagramm As ChartObject
Dim doLinks As Double
For inSpalte = 1 To 100
If Application.WorksheetFunction.Sum(Range(Cells(5, inSpalte), Cells(7, inSpalte))) > 0  _
Then
Set chDiagramm = Worksheets("Daten 2").ChartObjects.Add(doLinks, 10, 100, 70)  '  _
links, oben, Breite, Höhe
With chDiagramm.Chart
.ChartType = xlPie
.SetSourceData Source:=Worksheets("Daten 2").Range(Worksheets("Daten 2").Cells( _
5, inSpalte), _
Worksheets("Daten 2").Cells(7, inSpalte)), PlotBy:=xlColumns
.SeriesCollection(1).Name = Worksheets("Daten 2").Range("B1:B2")
End With
doLinks = doLinks + 100
End If
Next inSpalte
Set chDiagramm = Nothing
End Sub




Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige