Fehler bei PasteSpecial
#1
Hallo wertes Forum,

ich habe da ein Problem mit .PasteSpecial.

Mein Code lautet:
Code:
wksZMB52.UsedRange.Copy
With ThisWorkbook.Worksheets("ZMB52").Cells(1, 1)
    .PasteSpecial Paste:=xlPasteValues
    .PasteSpecial Paste:=xlPasteFormats
End With
Application.CutCopyMode = False


wksCOOISPIOrders.UsedRange.Copy
With ThisWorkbook.Worksheets("COOISPI Orders").Cells(1, 1)
    .PasteSpecial Paste:=xlPasteValues
    .PasteSpecial Paste:=xlPasteFormats
End With
Application.CutCopyMode = False

Dieser Code stoppt bei jedem Durchlauf an einer der .PasteSpecial-Zeilen mit dem Fehler 1004: "Die PasteSpecial-Methode das Range-Objects konnte nicht ausgeführt werden.". Allerdings immer an einer anderen.
Und sobald ich im Debug erneut auf Play klicke läuft der Code ohne zu murren weiter.

Kann mir das jemand erklären und hat eine Lösung parat?

Vielen Dank,
Lutz
Antworten Top
#2
Ich habe jetzt nochmal folgende Zeile probiert:
Code:
wksZMB52.UsedRange.Copy ThisWorkbook.Worksheets("ZMB52").Cells(1, 1)
bekomme da aber den Fehler 1004: "Die Copy-Methode des Range-Objekts konnte nicht ausgeführt werden".
Mit einem
Code:
wksZMB52.UsedRange.Select
wird der Bereich korrekt markiert...

Gruß,
Lutz
Antworten Top
#3
Hallo

amüsant, Excel kann einen manchmal ganz schön Nerven.  Meistens sind es aber eigene Fehler!!
Wie hast du  wksZMB52  und das zweite wksCOOISPI deklariert??  Vorher mit einer Set Anweisung??

Zu meinen persönlichen Excel Erfahrungen die manchmal sehr seltsam sind!  Ich habe es schon gehabt das ich Tabellen Namen von Hand im Code angegeben habe und bekam dauernd Laufzeitfehler. Dann kopierte ich genervt den Namen vom Reiter in den Code und er lief einwandfrei! Ich konnte keinen Unterschied sehen, aber irgendwas schien Excel zu stören??
Dann zuckt man fassungslos die Schultern und freut sich wenn es endlich klappt!

mfg Gast 123
Antworten Top
#4
Hallo,

ich habe jetzt rumprobiert und scheinbar wird der .UsedRange nicht erkannt und kopiert.
Füge ich vor dem .Copy ein .Select ein läuft's...

Nachdem ich wegen eines anderen Problems die Zwischenablage am Ende meines Codes geleert habe, ist der Fehler nur noch an einer Stelle aufgetreten und nicht mehr wie zuvor an 3 verschiedenen ohne erkennbares Muster.
Dieser betreffende Code sieht jetzt so aus und läuft:
Code:
With wksCOOISPIComp.Cells(1, 1).EntireRow
    Set rngCopy = Nothing
    On Error Resume Next
    Set rngCopy = .Find(What:="Material", lookat:=xlWhole)
    On Error GoTo 0
    If rngCopy Is Nothing Then
        MsgBox "Keine Materialien gefunden." & vbNewLine & vbNewLine & _
            "Das Programm wird beendet!", vbCritical, Left(ActiveWorkbook.Name, InStr(ActiveWorkbook.Name, ".") - 1)
        End
    Else
        rngCopy.EntireColumn.TextToColumns Destination:=rngCopy, _
        DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=False, Comma:=False, Space:=False, Other:=False, _
        FieldInfo:=Array(1, 1), TrailingMinusNumbers:=True
    End If
End With

wksCOOISPIComp.UsedRange.Select
wksCOOISPIComp.UsedRange.Copy
With wksTWCOOISPIComp.Cells(1, 1)
    .PasteSpecial Paste:=xlPasteValues
    .PasteSpecial Paste:=xlPasteFormats
End With
Application.CutCopyMode = False
Vielleicht kann mir ja einer der Cracks erklären, warum der Beginn des Code-Schnipsels läuft und dann der .UsedRange nicht erkannt wird.

Gruß,
Lutz
Antworten Top
#5
Hallo

an diesem Code ist mir so einiges unklar, den müssen sich bitte die Forum Profi Kollegen mal ansehen!  Was macht mich aber stutzig!!??
rngCopy.EntireColumn.TextToColumns Destination:=rngCopy, _  usw.

Diesen Befehl habe ich noch nie gesehen, weiss nicht was der macht? Aber rngCopy.EntireColum kopiert doch eine ganze Spalte und fügt ihn wieder bei rngCopy ein??  Ich bekam beim Versuch das nachzubauen eine Fehlermeldung mit Zirkelbezug!  Den Teil kann ich mir nicht erklären, der ist mir zu hoch!
Wenn du aber EntireRow und EntireColumn verwendest, vergrösserst du damit nicht den UsedRange auf maximale Spalten und Zeilenzahl??
Könnte dann  der nachfolgende Kopiervorgang zum Fehler führen??

Wenn du den UsedRange von   wksCOOISPIComp  mit Select selektieren kannst müsste diese Mappe ja die Aktive Mappe sein, sonst führt Select ja zur Fehlermeldung!  Was genau wird mit wksCOOISPIComp deklariert??   Schade das ich ihn nicht verstehe, da kann ich zum Fehler nur wenig sagen.

mfg Gast 123
Antworten Top
#6
Hallo Gast 123,

ist eigentlich gar nicht schwer...
Code:
With wksCOOISPIComp.Cells(1, 1).EntireRow
    Set rngCopy = Nothing
    On Error Resume Next
    Set rngCopy = .Find(What:="Material", lookat:=xlWhole)
    On Error GoTo 0
sucht in der ersten Zeile nach dem Wort "Material". Ist das Wort nicht vorhanden, läuft das in einen Fehler, daher in On Error... eingeschlossen.
Code:
    If rngCopy Is Nothing Then
        MsgBox "Keine Materialien gefunden." & vbNewLine & vbNewLine & _
            "Das Programm wird beendet!", vbCritical, Left(ActiveWorkbook.Name, InStr(ActiveWorkbook.Name, ".") - 1)
        End
    Else
        rngCopy.EntireColumn.TextToColumns Destination:=rngCopy, _
        DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=False, Comma:=False, Space:=False, Other:=False, _
        FieldInfo:=Array(1, 1), TrailingMinusNumbers:=True
    End If
Wird "Material" nicht gefunden, kommt eine Meldung und das Makro bricht ab.
Wird "Material" gefunden, wird die gesamte Spalte mit "Text in Spalten" kopiert und eingefügt, damit die Zahlen, die Excel als Texte erkennt, auch wirklich zu Zahlen werden.
Der Rest sollte klar sein.

Habe gestern noch festgestellt, dass ein Pause vor dem .Copy zur Verbesserung führt.
Muss ich aber heute nochmal testen.

Gruß,
Lutz
[-] Folgende(r) 1 Nutzer sagt Danke an Lutz Fricke für diesen Beitrag:
  • Gast 123
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste