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

VBA: Diagramm kopieren, Paste-Fehler

VBA: Diagramm kopieren, Paste-Fehler
11.02.2021 13:56:24
Max
Hallo liebe Forum-Mitglieder und Excel-Götter*innen,
ich möchte mit VBA ein Diagramm kopieren und so oft in Zeilen darunter einfügen, bis Anzahl kleiner Diagramme = Anzahl Versuche (Makro: "CopyDiagram3"). Das große Übersichts-Diagramm soll auf Sheet1 bleiben, deshalb geht die Schleife von Anzahl_Diagramme+1 To Anzahl_Charts. Anhand der Zählvariable wird der Datenbereich des Diagramms angepasst.
Zwei einfachere/grundlegendere Makros habe ich dabei gelassen:
- "CopyDiagram" kopiert einmalig ein Diagramm und die Zeile darunter
- "CopyDiagram2" kopiert mittels Schleife von i = 2 To 3 ein Diagramm in die darunter liegenden Zeilen.
Alle Makros haben einmal prima funktioniert. Wenn ich allerdings Versuche hinzufüge und "CopyDiagram3" erneut ausführe, gibt es Paste-Methoden-Fehler oder "Anwendungs- oder objektorientierter Fehler".
Selbst, wenn ich Diagramme, die von den beiden simplen Makros eingefügt wurden, lösche und das Makro erneut ausführe, erscheinen dabei Paste-Fehler.
Werden Charts Nummer zugewiesen, die ich falsch annehme?
Wo liegt mein Fehler bzw. welche Bedingungen muss ich hinzufügen, damit "CopyDiagram3" funktioniert?
xlsm: https://www.herber.de/bbs/user/143822.xlsm
Vielen Dank im Voraus für eure Zeit und Hilfe.
Viele Grüße
Max

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

Betreff
Datum
Anwender
Anzeige
AW: VBA: Diagramm kopieren
11.02.2021 14:19:42
Beverly
Hi Max,
wenn ich dein Anliegen richtig interpretiere, dann müsste es so funktionieren:
Sub CopyDiagram3()
Dim i As Long
With ThisWorkbook.Worksheets("Sheet1")
q = .Cells(5, 14).Value
.ChartObjects(2).Copy
For i = 1 To q
.Paste
With .ChartObjects(.ChartObjects.Count)
.Top = Range("C" & 8 + i).Top
.Left = Range("C" & 8 + i).Left
With .Chart.SeriesCollection(3)
.Name = "=Sheet1!$B$" & 8 + i
.XValues = "=Sheet1!$F$5:$I$5"
.Values = "=Sheet1!$F$" & 8 + i & ":$I$" & 8 + i
.Border.ColorIndex = 10
.Format.Line.Weight = 1
End With
End With
Next
End With
End Sub


Anzeige
AW: VBA: Diagramm kopieren
11.02.2021 14:37:25
Max
Hallo Beverly,
wieder mal dankeschön für deine schnelle Antwort.
Leider führt mich auch dein Code zur Zeile, in der ".Paste" steht, mit dem Fehler:
"Laufzeitfehler '1004': Die Paste-Methode des Worksheet-Objektes konnte nicht ausgeführt werden."
Die Variable, die die Anzahl an Charts im Sheet zählt, brauche ich, damit nur die Diagramme genau dieser neu hinzugekommenen Versuchen erstellt werden. Beginnt die Schleife bei eins, dauert der Kopiervorgang inkl. Datenbereichsanpassung mit mehr Versuchen immer länger und über z.B. dem Diagramm der dritten Messung liegen irgendwann 20 Kopien drüber, womit die Dateigröße immer weiter steigt.
Oder wo liegt mein Denk- bzw. VBA-Fehler?
Viele Grüße
Max
Anzeige
AW: VBA: Diagramm kopieren
11.02.2021 14:47:46
Max
(da mein Problem noch nicht gelöst ist, aktiviere ich hiermit nochmal das Kontrollkästchen)
AW: VBA: Diagramm kopieren
11.02.2021 15:53:28
Firmus
Hallo Max,
chartsObjects.count steht auf "1". Du willst aber Nr. "2" kopieren.
Nr. "2" existiert aber nicht, ergo Fehler 1004.
Wie gefunden?
Debug einiger Zähler, Ersetzen von ".ChartObjects(2).Copy" durch ".ChartObjects(1).Copy".
Schon läuft das Macro durch (aber mit falschem Copy...).
Wie reproduzieren?
1. Das kleine Chart in Zelle C8 löschen. (Damit fehlt chart(2) im Object.)
2. Einen deiner 3 Kopierbuttons drücken. JEDER bringt den Fehler 1004.
Warum chart in c8 fehlt? Keine Ahnung, musst du wissen.
Gruß,
Firmus
Buttonsdann
Anzeige
AW: VBA: Diagramm kopieren
11.02.2021 17:32:18
Beverly
Hi Max,
das kann ich in deiner hochgeladenen Mappe nicht nachvollziehen - der Code läuft problemlos durch und erstellt in Spalte C 5 neue Diagramme.
Wenn immer neue Diagramm hinzukommen würde ich aber anstelle der Variablen für die Anzahl an Diagrammen stattdessen die Zeile verwenden, in der sich das letzte Diagramm in Spalte C befindet:
Sub CopyDiagram3()
Dim i As Long
Dim chrDia As ChartObject
Dim lngZeile As Long
With ThisWorkbook.Worksheets("Sheet1")
For Each chrDia In .ChartObjects
If chrDia.TopLeftCell.Column = 3 Then
If chrDia.TopLeftCell.Row > lngZeile Then lngZeile = chrDia.TopLeftCell.Row
End If
Next chrDia
lngZeile = lngZeile + 1
q = .Cells(5, 14).Value
.ChartObjects(2).Copy
For i = 1 To q
.Paste
With .ChartObjects(.ChartObjects.Count)
.Top = Range("C" & lngZeile).Top
.Left = Range("C" & lngZeile).Left
With .Chart.SeriesCollection(3)
.Name = "=Sheet1!$B$" & lngZeile
.XValues = "=Sheet1!$F$5:$I$5"
.Values = "=Sheet1!$F$" & lngZeile & ":$I$" & lngZeile
.Border.ColorIndex = 10
.Format.Line.Weight = 1
End With
End With
lngZeile = lngZeile + 1
Next
End With
End Sub


Anzeige
Copy-Paste funktioniert nur mit Einzelschritt
11.02.2021 15:39:53
Max
Mir ist aufgefallen, dass meine Makros super funktionieren, wenn ich sie in Einzelschritten ausführe.
Ich muss also VBA dazu bringen, dass Copy und Paste sauber nacheinander ausgeführt werden, wenn ich das gesamte Makro mit einmal starte.

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige