Kurzfassung —
PasteSpecialist ein gefilterter Einfügevorgang: Sie kopieren einen Bereich mit.Copyin die Zwischenablage und wählen dann aus, welche einzelne Schicht durchkommt — Werte, Formate, Formeln oder Spaltenbreiten — sowie optional eine Operation (addieren, multiplizieren, transponieren). Der Haken:PasteSpecialliest eine aktive Zwischenablage, muss also direkt auf ein.Copyfolgen; alles, was die Zwischenablage dazwischen leert — eineMsgBox, ein weiteres Copy, sogar wenn Excel den Fokus verliert — liefertPasteSpecial method of Range class failed. Wenn Sie alles unverändert kopieren wollen, brauchen SiePasteSpecialgar nicht erst — dafür gibt es Copy Destination.
' PasteSpecial liest die Zwischenablage, deshalb direkt davor kopieren.
Range("A1:A20").Copy ' Zwischenablage laden
Range("C1").PasteSpecial Paste:=xlPasteValues ' nur die Werte kommen durch
Application.CutCopyMode = False ' Laufrahmen loeschen
' Waehlen Sie in einem Aufruf, WAS durchkommt UND WIE es ankommt:
Range("E1:E20").Copy
Range("G1").PasteSpecial Paste:=xlPasteValues, _
Operation:=xlPasteSpecialOperationAdd, Transpose:=False
PasteSpecial ist das Code-Pendant zum Dialogfeld Inhalte einfügen — dem, mit dem Sie nur Werte,
nur Formate einfügen oder eine Spalte in eine Zeile transponieren können. Einfaches
Copy Paste bewegt die ganze Zelle; PasteSpecial ist das Werkzeug, wenn Sie
nur eine Schicht davon wollen und sonst nichts. Diese Kontrolle kommt mit einer harten Einschränkung,
die fast jeden beim ersten Mal stolpern lässt — deshalb fangen wir dort an und bauen von da aus weiter.
Was Sie lernen
- Das Denkmodell —
PasteSpecialist ein Filter über einem Einfügevorgang, keine andere Art von Kopieren - Die eine Regel, die die meisten Fehler verhindert — es liest eine aktive Zwischenablage,
.Copymuss also unmittelbar davor stehen - Die zwei Achsen — was durchkommt (
Paste:=) und wie es ankommt (Operation:=,Transpose:=) - Das reine Werte-Einfügen und seine Formatfalle (
xlPasteValuesvs.xlPasteValuesAndNumberFormats) - Aufräumen mit
Application.CutCopyMode = False - Wann
PasteSpecialdas falsche Werkzeug ist und eine direkte Bewegung besser passt
Das Denkmodell: ein Filter über einem Einfügevorgang
Ein einfacher Einfügevorgang kopiert eine Zelle komplett — ihren Wert, ihre Formel, ihr Zahlenformat, ihre
Rahmen, ihre Füllung, alles auf einmal. PasteSpecial setzt einen Filter vor diesen Einfügevorgang. Sie
kopieren mit .Copy weiterhin die gesamte Quelle in die Zwischenablage, aber im Moment des Einfügens
sagen Sie: „Lass nur diese eine Schicht durch." Stellen Sie sich die Zwischenablage als einen Stapel
durchsichtiger Folien vor — Wert, Formel, Format, Spaltenbreite — und PasteSpecial als das eine
Werkzeug, mit dem Sie eine einzelne Folie abheben und auf dem Ziel ablegen.
Das ist die ganze Idee, und sie erklärt, warum PasteSpecial immer aus zwei Hälften besteht: einem
.Copy, das jede Schicht in die Zwischenablage lädt, und einem .PasteSpecial, das auswählt, welche
Schicht bleibt. Fehlt die erste Hälfte, gibt es nichts zu filtern — und genau das ist der Fehler weiter
unten.
Die wichtigste Regel: es liest eine aktive Zwischenablage
Hier ist der Fehler hinter fast jedem PasteSpecial method of Range class failed. PasteSpecial merkt
sich nicht den Bereich, den Sie kopiert haben — es liest in dem Moment, in dem es läuft, die
Windows-Zwischenablage. Wenn zwischen Ihrem .Copy und Ihrem .PasteSpecial irgendetwas die
Zwischenablage leert, hat der Einfügevorgang nichts zum Arbeiten und wirft einen Laufzeitfehler:
Range("A1:A20").Copy
MsgBox "Gleich wird eingefuegt" ' diese MsgBox kann die Zwischenablage leeren
Range("C1").PasteSpecial xlPasteValues ' Laufzeitfehler 1004: PasteSpecial method ... failed
Die Zwischenablage ist zustandsbehaftet und empfindlich. Sie wird durch ein weiteres .Copy oder
.Cut geleert, durch Application.CutCopyMode = False, oft durch eine MsgBox oder InputBox, und
manchmal einfach dadurch, dass Excel den Fokus verliert. Die Lösung ist Disziplin, kein Trick: Halten
Sie .Copy und .PasteSpecial direkt nebeneinander, ohne irgendetwas dazwischen — keine Dialoge, keine
weiteren Kopien, keine Benutzerinteraktion. Wenn Sie eine Schleife brauchen, kopieren Sie innerhalb der
Schleife unmittelbar vor jedem Einfügen, niemals nur einmal davor.
Die zwei Achsen: was durchkommt und wie es ankommt
Jeder PasteSpecial-Aufruf wird durch zwei unabhängige Entscheidungen beschrieben. Die erste, Paste:=,
wählt, welche Schicht durchkommt:
Range("A1").PasteSpecial Paste:=xlPasteValues ' nur die resultierenden Werte
Range("A1").PasteSpecial Paste:=xlPasteFormulas ' die Formeln (Bezuege verschieben sich)
Range("A1").PasteSpecial Paste:=xlPasteFormats ' Schrift, Fuellung, Rahmen - keine Daten
Range("A1").PasteSpecial Paste:=xlPasteColumnWidths ' nur die Spaltenbreiten
Range("A1").PasteSpecial Paste:=xlPasteAll ' alles (wie ein normaler Einfuegevorgang)
Die zweite, Operation:=, entscheidet, wie die ankommenden Zahlen mit dem verrechnet werden, was schon
da ist — xlPasteSpecialOperationAdd, Subtract, Multiply, Divide oder None. Zwei Schalter
vervollständigen das Bild: Transpose:=True dreht Zeilen in Spalten, und SkipBlanks:=True lässt das
Ziel überall dort unangetastet, wo die Quellzelle leer ist. Der klassische Trick „addiere eine Korrektur
zu jeder Zahl in einer Spalte" ist ein einziger Aufruf: Korrektur in eine Zelle schreiben, mit .Copy
kopieren, dann PasteSpecial Paste:=xlPasteValues, Operation:=xlPasteSpecialOperationAdd über den Bereich
legen.
Der häufigste Einfügevorgang — nur Werte — und seine Formatfalle
Nur Werte einzufügen ist der Grund, warum die meisten Leute Inhalte einfügen überhaupt öffnen: Es
verwandelt aktive Formeln in die Zahlen, die sie erzeugt haben, sodass Sie die Quelle löschen oder
volatile Formeln stoppen können (die ganze Geschichte steht in
Paste Values). Aber es gibt eine Falle. Das nackte xlPasteValues kopiert
die Zahl, nicht das Zahlenformat — eine Spalte mit Datumswerten kommt also als Seriennummern wie
45000 zurück, und Währungen verlieren ihr Symbol:
srcDates.Copy
dst.PasteSpecial Paste:=xlPasteValues ' Datumswerte kommen als 45000, 45001, ...
dst.PasteSpecial Paste:=xlPasteValuesAndNumberFormats ' Datumswerte kommen als Datum an - meist das Ziel
Nutzen Sie xlPasteValuesAndNumberFormats, sobald die Anzeige zählt — bei Datumswerten, Währungen und
Prozentwerten fast immer der Fall. Reservieren Sie das nackte xlPasteValues für Fälle, in denen Sie
wirklich rohe Zahlen ohne jede übernommene Formatierung wollen.
Aufräumen: CutCopyMode und der Laufrahmen
Nach einem .Copy legt Excel einen schimmernden Laufrahmen um die Quelle und lässt die Zwischenablage
scharf. Application.CutCopyMode = False löscht beides — es entfernt den Rahmen und teilt Excel mit, dass
Sie fertig sind. Für den Einfügevorgang selbst ist es nicht zwingend nötig, aber wenn Sie es weglassen,
fügt die nächste versehentliche Enter-Taste erneut ein, und ein Bereich, der „scharf" bleibt, ist eine
häufige Quelle der oben beschriebenen Fragilität. Machen Sie es zur letzten Zeile jedes
Kopier-/Einfügeblocks, direkt nach dem PasteSpecial.
Wenn PasteSpecial das falsche Werkzeug ist
PasteSpecial verdient seinen Platz nur, wenn Sie eine einzelne Schicht (Werte, Formate, Formeln) oder
eine Operation (transponieren, addieren) brauchen. Wenn Sie einen Bereich unverändert kopieren — Wert,
Formel und Format zusammen — brauchen Sie die Zwischenablage überhaupt nicht: src.Copy Destination:=dst
erledigt die ganze Kopie in einer Anweisung, ohne dass etwas gelöscht oder beschädigt werden könnte. Und
wenn Sie nur Werte wollen, ist dst.Value = src.Value noch schneller und berührt die Zwischenablage
nie — das umgeht jeden Fehlermodus in diesem Guide. Die Faustregel ist einfach: Greifen Sie zu
PasteSpecial für einen gefilterten Einfügevorgang und zu
Copy Destination für eine vollständige Kopie. Ein PasteSpecial, wo
eine einfache Zuweisung reichen würde, ist eine fragile Zeile, die nur darauf wartet, zu brechen.
Wie ExcelMaster hilft
Die Kombination .Copy gefolgt von .PasteSpecial ist genau die Art von Code, die im schnellen Test
funktioniert und in der Produktion bricht — eine MsgBox schiebt sich zwischen die beiden Zeilen, eine
Schleife kopiert einmal davor statt darin, xlPasteValues entfernt still die Datumsformate, und plötzlich
wirft das Makro PasteSpecial method of Range class failed oder fügt jemandem Seriennummern ein, der
ihnen vertraut.
ExcelMaster lässt Sie
beschreiben, welchen Einfügevorgang Sie wollen — „hier nur die Werte einfügen", „nur die Formatierung aus
diesem Block kopieren", „diese Spalte in eine Zeile transponieren" — und schreibt das passende
PasteSpecial mit .Copy direkt davor, xlPasteValuesAndNumberFormats, wenn die Anzeige zählt, und
Application.CutCopyMode = False zum Aufräumen. Wenn eine vollständige Kopie reicht, überspringt es die
Zwischenablage komplett. Sie behalten die Arbeitsmappe und den Code.
Häufig gestellte Fragen
Warum tritt PasteSpecial method of Range class failed auf?
Weil PasteSpecial die aktive Zwischenablage liest und dort nichts liegt. Es merkt sich nicht den
Bereich, den Sie vorher kopiert haben — es liest, was in dem Moment, in dem es läuft, auf der
Zwischenablage ist. Wenn eine MsgBox, ein weiteres .Copy, Application.CutCopyMode = False oder ein
Fokusverlust von Excel die Zwischenablage zwischen Ihrem Kopieren und Ihrem Einfügen geleert hat, schlägt
die Methode fehl. Halten Sie .Copy und .PasteSpecial auf benachbarten Zeilen, ohne irgendetwas
dazwischen.
Wie füge ich in VBA nur Werte ein?
Kopieren Sie die Quelle mit .Copy, dann target.PasteSpecial Paste:=xlPasteValues, und schließen Sie
mit Application.CutCopyMode = False ab. Wenn die Zellen Datumswerte, Währungen oder Prozentwerte
enthalten, nutzen Sie stattdessen xlPasteValuesAndNumberFormats, damit die Formatierung mitkommt — das
nackte xlPasteValues fügt die rohen Zahlen ein, und Datumswerte kommen als Seriennummern wie 45000 an.
Für reine Werte ganz ohne Zwischenablage ist target.Value = source.Value noch einfacher.
Was ist der Unterschied zwischen xlPasteValues und xlPasteValuesAndNumberFormats?
xlPasteValues fügt nur die resultierenden Zahlen und Texte ein und lässt das Zahlenformat weg — ein
Datum erscheint also als Seriennummer, und Währungen verlieren ihr Symbol. xlPasteValuesAndNumberFormats
fügt die Werte und das Anzeigeformat ein, sodass Datumswerte Datumswerte bleiben und Währungen ihr
Symbol behalten. Nutzen Sie Zweiteres, sobald die Anzeige zählt — das ist meistens der Fall.
Wie transponiere ich einen Bereich mit PasteSpecial?
Kopieren Sie die Quelle mit .Copy und fügen Sie dann mit Transpose:=True ein, zum Beispiel
target.PasteSpecial Paste:=xlPasteValues, Transpose:=True. Das dreht Zeilen in Spalten und Spalten in
Zeilen. Kombinieren Sie es mit xlPasteValues, wenn nur die Daten transponiert werden sollen, oder mit
xlPasteAll, um die Formatierung gleich mitzunehmen.
Kann ich mit PasteSpecial einen Zahlenbereich addieren oder multiplizieren?
Ja — das ist die Achse Operation:=. Schreiben Sie den Operanden in eine Zelle, kopieren Sie sie mit
.Copy, und rufen Sie dann über den Zielbereich
PasteSpecial Paste:=xlPasteValues, Operation:=xlPasteSpecialOperationAdd auf (oder Multiply,
Subtract, Divide). Excel verrechnet die kopierte Zahl mit jedem vorhandenen Wert direkt vor Ort — ein
einziger Aufruf, um eine ganze Spalte um eine Korrektur zu erhöhen oder mit einem Faktor zu skalieren.
Getestet in
Getestet in: Excel 365 (Windows 11), VBA 7.1 — zuletzt geprüft am 09.09.2026.
Weiterführende Anleitungen: VBA Werte einfügen · VBA Copy Destination · VBA Kopieren und Einfügen · VBA Range · VBA Formula
