Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Shapes.Copy - Activesheet.Paste mit Bug

Forumthread: Shapes.Copy - Activesheet.Paste mit Bug

Shapes.Copy - Activesheet.Paste mit Bug
18.09.2024 14:57:54
daniel
Hallo
ich kämpfe grad mit folgendem Problem:
ich kopiere ein Shape auf einem Tabellenblatt und möchte es an anderer Stelle wieder einfügen.

also im Prinzip:
ActiveSheet.Shapes(1).Copy

ActiveSheet.Paste

allerdings bekomme ich hier einen Laufzeitfehler 1004 beim .Paste: "die Paste-Methode konnte nicht ausgeführt werden"

ein echter Fehler kann es aber nicht zu sein, denn im Einzelstepmodus funktioniert es.
ebenso funktioniert es, wenn das Blatt nicht aktiv ist.

also klar einfacher Workaround: zum Einfügen anderes Blatt selektieren.
trotzdem würde ich gerne das ganze im aktiven Blatt ausführen lassen, damit man zusehen kann, wie das Bild wächst (es sind viele Punkte die so eingefügt werden, deswegen ist Einzelstepmodus auch keine Lösung)

Weiß jemand, wie man diesen Bug austricksen kann?

Gruß Daniel

Anzeige

20
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Shapes.Copy - Activesheet.Paste mit Bug
18.09.2024 15:16:36
Onur
Bei mir funktioniert es - Poste doch mal deine Datei.
AW: Shapes.Copy - Activesheet.Paste mit Bug
18.09.2024 16:12:47
daniel
https://www.herber.de/bbs/user/172277.xlsm

zum Start auf den Button klicken.
dieser wird dann kopiert

bei mir hats früher auch funktioniert. Könnte es an der Excelversion liegen?
Anzeige
AW: Shapes.Copy - Activesheet.Paste mit Bug
18.09.2024 16:53:36
Onur
Welche hast du denn ?
AW: Shapes.Copy - Activesheet.Paste mit Bug
18.09.2024 17:03:10
daniel
365 buisniess, 16.0
wenn du es detaillier brauchst, musst du mir sagen, wo ich die information finden kann
AW: Shapes.Copy - Activesheet.Paste mit Bug
18.09.2024 17:05:30
Onur
Reicht schon...
Bei mir kam auch der selbe Fehler - nach dem 4. Klick.
Danach nie wieder - egal wie oft und wie schnell ich geklickt habe.
Anzeige
AW: Shapes.Copy - Activesheet.Paste mit Bug
18.09.2024 15:24:23
GerdL
Moin
Sub Unit()

ActiveSheet.Shapes(1).Copy
ActiveSheet.Cells(50, 1).PasteSpecial xlPasteAll
Application.CutCopyMode = False
End Sub

Gruß Gerd
ohne copy und paste
18.09.2024 23:16:26
Udo D.
Hi Daniel,
ohne C+P als Beispiel ...

Sub Shape_duplizieren()
' ohne copy paste ...
ActiveSheet.Shapes.Range("Shape_01").Duplicate.Name = "Kopie_01"
' ActiveSheet.Shapes.Range("Shape_01").Duplicate.Name = sheets(1).cells(activecell.row,5).value ' als Bsp.


' setzt dein neues Shape rechts daneben mit etwas Luft
ActiveSheet.Shapes.Range("Kopie_01").Left = ActiveSheet.Shapes.Range("Shape_01").Width + 1 + ActiveSheet.Shapes.Range("Kopie_01").Left
ActiveSheet.Shapes.Range("Kopie_01").Top = ActiveSheet.Shapes.Range("Shape_01").Top

End Sub

LG Udo
Anzeige
AW: ohne copy und paste
19.09.2024 11:50:57
daniel
Hi Udo
Danke.
Duplicate sieht gut aus.
Das Problem ist, ich brauche das neue Shape in einem anderen Blatt und das Duplicate scheint nur im selben Blatt zu funktionieren, dh um ein Copy/Paste (welches ja das Problem ist) komme ich hier nicht herum.
Gruß Daniel

AW: Shapes.Copy - Activesheet.Paste mit Bug
19.09.2024 07:22:07
Ulf
Hi Daniel,
habe mit der von dir geposteten Datei getestet und meine vermeintliche Ursache könnte sein, dass a) Shape Code hat und VBE hakt oder b) keine Deklaration verwendet wird.
so funktioniert es bei mir ohne irgendwelche Fehler


Sub test()
Dim sh As Shape
Set sh = ThisWorkbook.Worksheets(1).Shapes(1)
Dim i As Integer, dblI As Double
For i = 20 To 100 Step 10
dblI = CDbl(i + 200)
If Not Zeichnen_Ort(dblI, dblI, sh, "Nr " & CStr(i / 10), True) Then
Exit Sub
End If
Next
End Sub

Function Zeichnen_Ort(Ko_OW As Double, Ko_NS As Double, Icon As Shape, Optional Bez As String, Optional BezAnz As Boolean) As Boolean
On Error GoTo Zeichnen_OrtERR
Dim wks As Worksheet
Ko_NS = Ko_NS - Icon.Height / 2
Ko_OW = Ko_OW - Icon.Width / 2
Set wks = ThisWorkbook.Worksheets(2)
Icon.Copy
With wks
.Activate
.Paste
With .Shapes(.Shapes.Count)
.Top = Ko_NS
.Left = Ko_OW
If Not IsMissing(Bez) Then
.Name = Replace(Bez, " ", "_")
If Not IsMissing(BezAnz) Then
If BezAnz Then .TextFrame2.TextRange.Characters.Text = Bez '----- Fehler, wenn Shape mit PasteSpecial eingefügt
End If
End If
End With
End With
Zeichnen_Ort = True
Zeichnen_OrtOUT:
Exit Function
Zeichnen_OrtERR:
Debug.Print Err.Number & vbCrLf & Err.Description & vbCrLf & Err.Source
Zeichnen_Ort = False
Resume Zeichnen_OrtOUT
End Function

hth
Ulf
Anzeige
AW: Shapes.Copy - Activesheet.Paste mit Bug
19.09.2024 16:22:29
snb
Shape in Sheet1
Sollte kopiiert werden ins Sheet2:

Sub M_snb()

Shapes.SelectAll
Selection.Copy
' Application.Goto Sheet2.Cells(12, 3)
Sheet2.Paste
End Sub


Keine 'bugs' oder Meldungen.


Anzeige
AW: Shapes.Copy - Activesheet.Paste mit Bug - Erledigt
20.09.2024 19:27:22
daniel
Hallo
erstmal ein großes Dankeschön an alle, die sich beteiligt und versucht haben zu helfen.
heute gabs ein Excel-Update, und jetzt läuft es wieder wie gewünscht.
Gruß Daniel
AW: Shapes.Copy - Activesheet.Paste mit Bug
18.09.2024 16:13:29
daniel
Danke.
so geht's.
Trotzdem seltsam.
AW: Shapes.Copy - Activesheet.Paste mit Bug
18.09.2024 17:36:44
daniel
naja, so richtig gehts auch nicht.
wenn man die Grafik so einfügt, dann funktionieren hinterher die weiteren Bearbeitungsschritte nicht mehr, also sowas

If BezAnz Then .TextFrame2.TextRange.Characters.Text = Bez

und da hast du ja keine chance irgendie rauszufinden, wie du das programmieren musst.
Anzeige
AW: Shapes.Copy - Activesheet.Paste mit Bug
18.09.2024 17:38:38
Onur
Und TextFrame2 ist gerade eingefügt worden ?
AW: Shapes.Copy - Activesheet.Paste mit Bug
18.09.2024 17:48:10
daniel
das mit dem .Textframe2...
ist schon immer drin und funktioniert auch in Verbindung .Paste.
jetzt wurde ja vorgeschlagen, das .Paste durch .PasteSpecial zu ersetzen, damit das Einfügen auch im aktiven Tabellenblatt funktioniert (was auch geht), aber damit funktioniert halt die nachfolgende Bearbeitung nicht mehr.

Anzeige
AW: Shapes.Copy - Activesheet.Paste mit Bug
18.09.2024 17:52:25
Onur
Sorry, ohne den kompletten Code kann ich auch nichts dazu sagen, denn mehr gibt deine gepostete Datei nicht her.
AW: Shapes.Copy - Activesheet.Paste mit Bug
18.09.2024 18:53:23
daniel
Hi
ok, Code wäre das. Es geht um die Funktion Zeichnen_Ort.
mit dem Makro Test kannst du sie ausführen.

du benötigst eine Datei mit zwei Tabellenblättern.
auf dem ersten Sollte eine Grafik liegen (Kreis oder sowas)

die Funktion kopiert das angegebene Shape aus dem ersten Blatt und fügt es im zweiten Tabellenblatt an den angegebenen Koordinaten ein (die ersten beiden Parameter).

kritisch sind die beiden Paste bzw PasteSpecial-Varianten (durch ------------ markiert)

wenn ich die Variante nehme: Sheets(2).Paste funktioniert es, außer das Sheets(2) ist aktiv (was ich aber gerne hätte). Im Einzelstepmodus gibt es keinen Fehler
die Variante Sheets(2).Cells(1, 1).PasteSpecial funktioniert zunächst wie gewünscht, bringt aber dann beim hinzufügen des Textes den Fehler "Laufzeitfehler -214704809 (80070057) Der angegebene Wert ist ausßerhalb des zulässigen Bereichs"

Sub test()

Zeichnen_Ort 20, 20, Sheets(1).Shapes(1), "Hallo Welt", True
End Sub




Function Zeichnen_Ort(Ko_OW As Double, Ko_NS As Double, Icon As Shape, Optional Bez As String, Optional BezAnz As Boolean) As Boolean
Zeichnen_Ort = True
Ko_NS = Ko_NS - Icon.Height / 2
Ko_OW = Ko_OW - Icon.Width / 2

Icon.Copy
With Sheets(2)
'----------------------------------------------------------------------------------------------
Sheets(2).Paste '--- Fehler, wenn Sheet(2) aktiv
'Sheets(2).Cells(1, 1).PasteSpecial '--- Zuweisen des Textes funktioniert nicht mehr
'-----------------------------------------------------------------------------------------------
With .Shapes(.Shapes.Count)
.Top = Ko_NS
.Left = Ko_OW
If Not IsMissing(Bez) Then
.Name = Replace(Bez, " ", "_")
If Not IsMissing(BezAnz) Then
If BezAnz Then .TextFrame2.TextRange.Characters.Text = Bez '----- Fehler, wenn Shape mit PasteSpecial eingefügt
End If

End If
End With
End With
End Function


Danke für deine Mühe

Gruß Daniel
Anzeige
AW: Shapes.Copy - Activesheet.Paste mit Bug
18.09.2024 23:40:02
Onur
Paste alleine läuft anstandslos durch, egal welches Blatt ausgewählt wurde.
PasteSpecial kann gar nicht funktionieren, denn laut Microsoft heisst es ja:
"Fügt ein Range-Objekt ein, das in den angegebenen Bereich kopiert wurde."
AW: Shapes.Copy - Activesheet.Paste mit Bug
19.09.2024 11:28:07
daniel
wie gesagt, bei mir läuft .PASTE nur dann, wenn das Blatt auf dem Eingefügt wird nicht aktiv ist.
und das .PASTESPECIAL funktioniert, bis auf die Zuweisung des Textes.

Gruß Daniel
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige