Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1308to1312
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

Grafik mit Makro generieren

Grafik mit Makro generieren
19.04.2013 08:41:08
Nik
Schönen guten Morgen zusammen,
ich habe ein Problem, respektive eine Idee, die ich gerne mit VBA umsetzen würde, ich aber nicht weiterkomme.
Ich habe eine Tabelle mit recht vielen Produkten, wobei jedes Produkt 3 Zeilen in Anspruch nimmt (siehe auch Datei):
https://www.herber.de/bbs/user/84944.xls
Jedes Produkt möchte ich nun in einer Grafik darstellen. Da in der Tabelle über 100 Produkte stehen ist eine Copy& Paste-Übung nicht wirklich sinnvoll.
Das Makro sollte sinnvollerweise die Grafik um 30 Zeilen nach unten kopieren und die Datenbasis jeweils immer um 3 nach unten versetzen, da die Datenbasis jedes Produktes 3 Zeilen hoch ist.
Hat hier jemand eine Idee dies umzusetzen?
Vielen lieben Dank für Eure Hilfe und schonmal allen ein schönes Weekend!
Gruss
Nik

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Grafik mit Makro generieren
19.04.2013 09:02:04
Beverly
Hi Nik,
Sub DiasKopieren()
Dim lngZeile As Long
Dim dblOben As Double
Dim dblHoehe As Double
For lngZeile = 8 To IIf(IsEmpty(Cells(Rows.Count, 1)), Cells(Rows.Count, 1).End(xlUp).Row,  _
Rows.Count) Step 3
dblOben = ActiveSheet.ChartObjects(ActiveSheet.ChartObjects.Count).Top
dblHoehe = ActiveSheet.ChartObjects(ActiveSheet.ChartObjects.Count).Height
ActiveSheet.ChartObjects(1).Copy
ActiveSheet.Paste
With ActiveSheet.ChartObjects(ActiveSheet.ChartObjects.Count).Chart
.SetSourceData Source:=Range(Cells(lngZeile, 3), Cells(lngZeile + 2, 14))
.Parent.Top = dblOben + dblHoehe
.Parent.Left = Columns(1).Left
End With
DoEvents
Next lngZeile
End Sub


Anzeige
AW: Grafik mit Makro generieren
19.04.2013 09:27:14
Nik
Schönen guten Morgen Karin,
vielen vielen lieben Dank für Deine Hilfe! :-) Allerdings komme ich nicht so recht weiter, denn bei mir kommt eine Fehlermeldung bei dieser Zeile:
.SetSourceData Source:=Range(Cells(lngZeile, 3), Cells(lngZeile + 2, 14))
In der Originaldatei, als auch in der Beispieldatei, die ich hochgeladen hatte. Und ich komme bei diesem professionellem Code nicht so recht weiter, sprich ich verstehe ihn nur teilweise (übersteigt meine jetzigen Kenntnisse..).
Muss ich noch etwas beachten oder mache ich etwas falsch?
Vielen lieben Dank und Gruss
Nik

Anzeige
AW: Grafik mit Makro generieren
19.04.2013 09:42:05
Beverly
Hi Nick,
ich habe den Code mit Excel2010 getestet und offensichtlich möchte Excel2003 noch den Namen des Tabellenblattes vor den Zellbezügen:
Sub DiasKopieren()
Dim lngZeile As Long       ' Schleifenvariable
Dim dblOben As Double      ' Variable für die Position der Diagrammoberkante
Dim dblHoehe As Double     ' Variable für die Diagrammhöhe
' Schleife von zeile 8 bis zur letzten belegten Zeile in Spalte A in 3er Schritten
For lngZeile = 8 To IIf(IsEmpty(Cells(Rows.Count, 1)), Cells(Rows.Count, 1).End(xlUp).Row,  _
Rows.Count) Step 3
' Position Oberkante des letzten Diagramms
dblOben = ActiveSheet.ChartObjects(ActiveSheet.ChartObjects.Count).Top
' Höhe des letzten Diagramsm
dblHoehe = ActiveSheet.ChartObjects(ActiveSheet.ChartObjects.Count).Height
' 1. Diagramm kopieren
ActiveSheet.ChartObjects(1).Copy
' Kopie ins Tabellenblatt einfügen
ActiveSheet.Paste
' bezogen auf das zuletzt erstellte Diagramm
With ActiveSheet.ChartObjects(ActiveSheet.ChartObjects.Count).Chart
' Datenbereich zuweisen aus laufende Zeile Spalte B bis laufende Zeile + 2 Spalte N
.SetSourceData Source:=ActiveSheet.Range(ActiveSheet.Cells(lngZeile, 3), ActiveSheet. _
Cells(lngZeile + 2, 14))
' Position obere Kante des eingefügten Diagrammobjektes
.Parent.Top = dblOben + dblHoehe
' Position linke Kante des eingefügten Diagrammobjektes auf linke Kante Spalte A
.Parent.Left = ActiveSheet.Columns(1).Left
End With
DoEvents
Next lngZeile
End Sub
Ich habe zum besseren Verständnis auch noch ein paar Kommentare eingefügt.


Anzeige
AW: Grafik mit Makro generieren
19.04.2013 13:19:53
Nik
Hi Karin,
vielen lieben Dank, es funktioniert soweit auch ganz gut! Allerdings verschiebt er mir die Überschrift der Daten (hier also die Monate) auch um jeweils 3 Zeilen nach unten...
Hast Du spontan eine Idee wie man das noch anpassen könnte?
Vielen Dank und Gruss
Nik

AW: Grafik mit Makro generieren
19.04.2013 13:46:20
Beverly
Hi Nik,
ergänze noch nach der Zeile .SetSourceData .... diese Zeile:
          .SeriesCollection(1).XValues = ActiveSheet.Range("C4:N4")


Anzeige
AW: Grafik mit Makro generieren
19.04.2013 13:55:45
Nik
Hi Karin,
funktioniert...:-) Allerdings nimmt er den Namen (sprich Produktenamen) nicht mit, da steht nun Serie1 1, Series 2 und Series 3 anstatt die Produkte-Namen. Wie bekomme ich das jetzt noch hin?
Vielen lieben DANK! :-)
Gruss
Nik

AW: Grafik mit Makro generieren
19.04.2013 14:15:27
Beverly
Hi Nik,
in der folgenden Zeile anstelle von .Cells(lngZeile, 3) dieses: .Cells(lngZeile, 1)
.SetSourceData Source:=ActiveSheet.Range(ActiveSheet.Cells(lngZeile, 1), ActiveSheet. _
Cells(lngZeile + 2, 14))


Anzeige
AW: Grafik mit Makro generieren
19.04.2013 15:14:41
Nik
Hi Karin,
habe ich eben ausprobiert, aber er bezeichnet die Produkte immer noch mit Series 1 etc. :-( Obwohl ich nun wirklich nur die 3 mit einer 1 ersetzt habe..
Gruss
Nik

AW: Grafik mit Makro generieren
19.04.2013 15:45:51
Nik
Hi Karin,
jetzt funktioniert es, keine Ahnung warum das bei mir nicht wollte!
Also, vielen vielen lieben Dank und meinen allergrössten Respekt vor diesem VBA-Know-How!! Meine allergrösste Achtung! Das würde ich auch gerne können! Aber ich bin dran..
Also nochmals DANKE und Dir ein schönes Weekend!
Liebe Grüsse
Nik
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige