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

Forumthread: Selection.PasteSpecial Problem erzeugt fehler

Selection.PasteSpecial Problem erzeugt fehler
31.10.2005 21:26:05
Simon
Hallo zusammen,
Hab en Problem, das bisher eigentlichimmer funktioniert hat, nur auf einmal kommt da ne Fehler meldung.
Kopiere aus der Excel Datei "A" eine Zeile von Spalte F bis Ü und füge sie dann in der Datei "B" mit folgendem Code wieder ein und genau hier tritt dann der Fehler auf,
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
da ich nur die Werte möchte benötige ich die PasteSpecial.
Das einfügen mit diesem Code hat auch schon öfters geklappt.
Muss man irgendwas bestimmtes Beachten bei der PasteSpecial?
oder gibt es sonst noch ne einfache möglichkeit so etwas zu machen?
besten dank schon mal für die hilfe
Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Selection.PasteSpecial Problem erzeugt fehler
31.10.2005 23:09:04
Erich
Hallo Simon,
zwei Rückfragen, die vermutlich zusammenhängen:
Was ist die "Selection" vor dem PasteSpecial?
Wie lautet die Fehlermeldung? (Mit "kommt da ne Fehlermeldung" bist du ziemlich sparsam mit Infos, die es erleichtern würden, dir zu helfen...)
Falls mehr als eine Zelle selektiert ist und die "Maße" des Bereichs nicht mit denen des kopierten Bereichs übereinstimmen, gibts einen Fehler. Am einfachsten wäre, nur die Startzelle für das Einfügen anzugeben, also z. B. anstelle von

Range("C3:F7").Select
Selection.PasteSpecial ...

zu schreiben:

Range("C3").PasteSpecial ...

Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
AW: Selection.PasteSpecial Problem erzeugt fehler
01.11.2005 12:53:53
Simon
hallo erich,
muss mich entschuldigen das ich mich erst jetzt melde.
Danke für deinen Tip, hab meinen code geändert wie folgt
Sheets("korrektur").Range("B" & zähler + 1).PasteSpecial Paste:=xlPasteValues
und genau in der Code Zeile wird das makro abgebrochen, es kommt keine Fehlermeldung, der Code wird "nur Gelb gemacht"
hast du noch ne Idee warum das Makro abbricht?
Anzeige
AW: Selection.PasteSpecial Problem erzeugt fehler
01.11.2005 13:55:16
Erich
Hallo Simon,
PasteSpecial kann man nur auf dem aktiven Blatt ausführen. Du musst also das Zielblatt vor dem Einfügen aktivieren:

Sheets("korrektur").activate ' (oder .select)
Range("B" & zähler + 1).PasteSpecial Paste:=xlPasteValues
' evtl. wieder das vorige Sheet aktivieren

Wenn das dadurch entstehende Geflacker stört, kannst du vorher
Application.screenupdating=false
und nachher
Application.screenupdating=true
schreiben.
Grüße von Erich aus Kamp-Lintfort
Anzeige
AW: Selection.PasteSpecial Problem erzeugt fehler
01.11.2005 16:25:28
simon
hallo Erich
(das ist normalerweise nicht meine Art mir mit den Antworten so lange Zeit zu lassen, muss aber ständig wieder vom PC weg)
Schicke jetzt mal den ganzen code des Kopiervorgangs
AppExcel.Sheets("artikelstamm").Range(Cells(aktuellezeile + 8, 7), Cells(aktuellezeile + 8, 44)).Select
Selection.Copy
Windows(aktMap).Activate
zähler = Sheets("Korrektur").Range("e111").End(xlUp).Row
Sheets("korrektur").Activate
Range("B" & zähler + 1).PasteSpecial Paste:=xlPasteValues
Jetzt kommt immer noch der Fehler PasteSpecial Methode kann nicht ausgeführt werden,
und das makro hält wieder in der Zeile,
an was könnte es noch liegen ich hoffe du hast noch ne Idee
Anzeige
AW: Selection.PasteSpecial Problem erzeugt fehler
01.11.2005 20:57:50
Erich
Hallo Simon,
wo der Fehler liegt, habe ich jetzt nicht gesehen. Bei mir geht es so:

Sub tst()
Dim zähler&, aktZe&, aktMap$, AppExcel As Workbook
' ---------- meine Vorbelegungen zum Testen:
aktMap = "Mappe2"
Set AppExcel = Workbooks("Mappe1")
aktZe = 1
AppExcel.Activate   ' unnötig, wenn AppExcel die aktive Mappe ist
Range(Sheets("artikelstamm").Cells(aktZe + 8, 7), _
Sheets("artikelstamm").Cells(aktZe + 8, 44)).Copy
'oder, wenn "artikelstamm" aktives Blatt ist:
'  Range(Cells(aktZe + 8, 7), Cells(aktZe + 8, 44)).Copy
Workbooks(aktMap).Activate
'  Windows(aktMap).Activate ' funzt auch
'  zähler = Sheets("Korrektur").Range("e111").End(xlUp).Row ' funzt auch
Sheets("Korrektur").Activate
zähler = Range("e111").End(xlUp).Row
Range("B" & zähler + 1).PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
End Sub

Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Probleme mit Selection.PasteSpecial in Excel VBA beheben


Schritt-für-Schritt-Anleitung

  1. Kopiere den gewünschten Bereich: Stelle sicher, dass du den richtigen Bereich kopierst. Zum Beispiel:

    Range("A1:B10").Copy
  2. Aktiviere das Zielblatt: Bevor du den PasteSpecial-Befehl ausführst, aktiviere das Zielblatt:

    Sheets("Zielblatt").Activate
  3. Füge die Werte ein: Verwende PasteSpecial, um nur die Werte einzufügen:

    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
  4. Deaktiviere den CutCopy-Modus: Nach dem Einfügen solltest du den CutCopy-Modus beenden:

    Application.CutCopyMode = False

Häufige Fehler und Lösungen

  • Fehlermeldung "PasteSpecial Methode kann nicht ausgeführt werden": Dies kann auftreten, wenn das Ziel nicht aktiv ist oder der Selection-Bereich nicht mit dem kopierten Bereich übereinstimmt. Stelle sicher, dass das Zielblatt aktiv ist, bevor du PasteSpecial ausführst.

  • Code wird gelb markiert: Wenn der Code in der Zeile mit PasteSpecial gelb markiert wird, kann das auf ein Problem mit dem Zielbereich hindeuten. Achte darauf, dass du den richtigen Bereich für das Einfügen angibst, z.B. nur die Startzelle.


Alternative Methoden

Anstelle von Selection.PasteSpecial kannst du direkt auf das Zielzellenobjekt zugreifen. Das vermeidet das Problem, dass der Bereich nicht korrekt ausgewählt wird. Beispiel:

Sheets("Zielblatt").Range("B1").Value = Sheets("Quellblatt").Range("A1").Value

Wenn du mehrere Zellen einfügen möchtest, kannst du dies auch mit einer Schleife tun.


Praktische Beispiele

Hier ist ein einfaches Beispiel, wie du Daten von einem Blatt in ein anderes überträgst:

Sub DatenKopieren()
    Dim zähler As Long
    zähler = Sheets("Zielblatt").Range("A" & Rows.Count).End(xlUp).Row + 1

    Sheets("Quellblatt").Range("A1:B10").Copy
    Sheets("Zielblatt").Activate
    Range("A" & zähler).PasteSpecial Paste:=xlPasteValues
    Application.CutCopyMode = False
End Sub

In diesem Beispiel wird ein Bereich von "Quellblatt" kopiert und die Werte werden in das nächste freie Feld auf "Zielblatt" eingefügt.


Tipps für Profis

  • Verwende Application.ScreenUpdating = False vor deinem Code und setze es nach dem Einfügen wieder auf True zurück, um das Flackern des Bildschirms zu vermeiden.

  • Vermeide die Verwendung von Select und Selection, wo es möglich ist. Das macht deinen Code effizienter und weniger fehleranfällig.

  • Teste deinen Code schrittweise und nutze MsgBox oder die Debugging-Tools von VBA, um Werte zu überprüfen.


FAQ: Häufige Fragen

1. Was ist der Unterschied zwischen xlPasteValues und xlPasteAll?
xlPasteValues fügt nur die Werte ein, während xlPasteAll alle Formatierungen, Formeln und Werte überträgt.

2. Warum bekomme ich die Fehlermeldung "Methode kann nicht ausgeführt werden"?
Diese Fehlermeldung tritt häufig auf, wenn das Zielblatt nicht aktiv ist oder die Auswahl nicht mit dem kopierten Bereich übereinstimmt. Stelle sicher, dass du das Zielblatt aktivierst und die korrekten Zellen angibst.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige