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

Paste Diagramm

Paste Diagramm
04.05.2016 09:08:25
MM
Hallo Liebes Forum,
Ich habe ein Problem welches mich bald auf die Palme bringt:
Ich möchte von einer Tabelle in eine andere 3 Diagramme kopieren. Diese sollen jeweils an einer anderen Stelle landen (untereinander).
Mein Quellcode:
Dim Ziel As Range
Dim Diag As ChartObject
Set Diag = Sheets(TAB_Vorlagen).ChartObjects("Diag_A")
Diag.Copy
With Sheets(TAB_Protokoll)
Set Ziel = .Range(.Cells(Einfuegezeile, 1), .Cells(Einfuegezeile, 1))
.Paste
With .ChartObjects(.ChartObjects.Count)
.Top = Ziel.Top
.Left = Ziel.Left
End With
End With
Einfuegezeile = Einfuegezeile + Laenge_Diagramm
Set Diag = Sheets(TAB_Vorlagen).ChartObjects("Diag_B")
Diag.Copy
With Sheets(TAB_Protokoll)
Set Ziel = .Range(.Cells(Einfuegezeile, 1), .Cells(Einfuegezeile, 1))
.Paste
With .ChartObjects(.ChartObjects.Count)
.Top = Ziel.Top
.Left = Ziel.Left
End With
End With
Einfuegezeile = Einfuegezeile + Laenge_Diagramm
Set Diag = Sheets(TAB_Vorlagen).ChartObjects("Diag_C")
Diag.Copy
With Sheets(TAB_Protokoll)
Set Ziel = .Range(.Cells(Einfuegezeile, 1), .Cells(Einfuegezeile, 1))
.Paste
With .ChartObjects(.ChartObjects.Count)
.Top = Ziel.Top
.Left = Ziel.Left
End With
End With
Im Prinzip 3-mal der identische Code bis auf den Namen des Diagramms und der Zeile zum einfügen.
Das 1. Diagramm wird ohne zu murren an die richtige Stelle kopiert. Beim 2.kommt der Laufzeitfehler'1004': "Die Paste-Methode des Worksheets-Objekts konnte nicht ausgeführt werden". Klicke ich auf Debuggen und lasse den Code weiter ausführen wird das erste Diagramm an die Stelle vom zweiten kopiert. Das dritte Diagramm wird daraufhin wieder ohne Fehler richtig kopiert. (Es gibt alle drei Diagramme und der Name ist richtig geschrieben)
Ich hoffe es kann mir jemand weiterhelfen.
Gruß Matt

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Fehler nicht reproduzierbar! (owT)
04.05.2016 10:18:16
EtoPHG

Beispielmappe funktioniert problemlos (owT)
04.05.2016 11:14:45
EtoPHG

AW: Beispielmappe funktioniert problemlos (owT)
04.05.2016 11:35:34
Luschi
Hallo Matt,
kann EtoPHG's Feststellung nur bestätigen - keine Probleme mit Excel 2013/2016.
Gruß von Luschi
aus klein-Paris

Nur bei mir nicht
04.05.2016 13:14:32
MM
Habe die Datei gerade mal auf anderen Maschinen getestet, dort läuft sie auch ohne Probleme. Nur bei mir nicht :-(
Gibt es irgendwelche Excel-Einstellungen die die Ausführung von Makros beeinflussen?

Anzeige
AW: Paste Diagramm
04.05.2016 14:40:47
Beverly
Hi Matt,
ich kann den Fehler bestätigen (Excel2013). Versuche es mal so:
Sub Diagramme()
Dim Einfuegezeile As Integer
Dim Laenge_Diagramm As Integer
Dim TAB_Vorlagen As String
Dim intZaehler As Integer
Einfuegezeile = 1
Laenge_Diagramm = 20
TAB_Vorlagen = "Vorlagen"
Application.ScreenUpdating = False
If ActiveSheet.ChartObjects.Count > 0 Then ActiveSheet.ChartObjects.Delete
With Worksheets(TAB_Vorlagen)
For intZaehler = 1 To 3
.ChartObjects(intZaehler).Copy
Range("A1").Select
ActiveSheet.Paste
ActiveSheet.Shapes(intZaehler + 1).Top = Cells(Einfuegezeile, 1).Top
ActiveSheet.Shapes(intZaehler + 1).Left = Range("A1").Left
Einfuegezeile = Einfuegezeile + Laenge_Diagramm
DoEvents
Next intZaehler
End With
Application.ScreenUpdating = True
End Sub


Anzeige
AW: Paste Diagramm
04.05.2016 15:30:14
MM
Hallo Beverly,
Ich habe deinen Code mal getestet. Dieser funktioniert oft, aber nicht immmer. (Seltsames Verhalten von Excel)
Was bei mir immer funktioniert ist, wenn ich eine MessageBox einbaue. Will ich später natürlich nicht drin haben.

Public Const TAB_Vorlagen = "Vorlagen"
Public Const TAB_Protokoll = "Protokoll"
Public Zaehler As Integer
Sub Diagramme()
Dim Einfuegezeile As Integer
Dim Laenge_Diagramm As Integer
Einfuegezeile = 1
Laenge_Diagramm = 20
Zaehler = 0
Application.ScreenUpdating = False
'Alte Diagramme löschen
If ActiveSheet.ChartObjects.Count > 0 Then ActiveSheet.ChartObjects.Delete
Call Copy_Diagramm("Diag_A", Einfuegezeile)
Einfuegezeile = Einfuegezeile + Laenge_Diagramm
Call Copy_Diagramm("Diag_B", Einfuegezeile)
Einfuegezeile = Einfuegezeile + Laenge_Diagramm
Call Copy_Diagramm("Diag_C", Einfuegezeile)
Application.ScreenUpdating = True
End Sub
Sub Copy_Diagramm(Dia_Name As String, Ziel_Zeile As Integer)
Dim Ziel As Range
Zaehler = Zaehler + 1
MsgBox (Zaehler & ": " & Dia_Name)
Worksheets(TAB_Vorlagen).ChartObjects(Dia_Name).Copy
With Worksheets(TAB_Protokoll)
Set Ziel = .Range(.Cells(Ziel_Zeile, 1), .Cells(Ziel_Zeile, 1))
.Paste
With .ChartObjects(.ChartObjects.Count)
.Top = Ziel.Top
.Left = Ziel.Left
End With
End With
End Sub

Zum verzweifeln...

Anzeige
AW: Paste Diagramm
04.05.2016 17:54:22
Beverly
Hi,
das Problem ist anscheinend, dass Excel nicht genügend Zeit für das Einfügen des Diagramms/Bildschirmaufbau hat - das soll mit der Codezeile DoEvents abgefangen werden. Wenn ich von meinem Code ausgehe, dann würde ich dort einfach an mehreren Stellen weitere DoEvents einfügen:
            Range("A1").Select
ActiveSheet.Paste
DoEvents
ActiveSheet.Shapes(intZaehler + 1).Top = Cells(Einfuegezeile, 1).Top
DoEvents
ActiveSheet.Shapes(intZaehler + 1).Left = Range("A1").Left
Einfuegezeile = Einfuegezeile + Laenge_Diagramm
DoEvents

Anzeige
AW: Paste Diagramm
09.05.2016 11:28:27
MM
Hallo Beverly,
Deine Lösung funktioniert bisher ohne Probleme.
Danke Dir!
Gruß Matt

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige