Run Time Error 1004: PasteSpecial Methode van Range Class mislukt

  • Deel Dit
Hugh West

Een van de meest voorkomende problemen die we tegenkomen bij het werken met kopiëren en plakken in VBA is de run time error 1004 : PasteSpecial Methode van Range klasse mislukt In dit artikel laat ik u zien wat de mogelijke redenen zijn voor deze fout en hoe u die kunt oplossen, met goede voorbeelden en illustraties.

Download Praktijk werkboek

Download dit oefenwerkboek om te oefenen terwijl u dit artikel leest.

PasteSpecial Method Failed.xlsm

Methode PlakSpeciaal van Range Class mislukt: Oorzaken en oplossingen

Laten we zonder verder oponthoud overgaan tot onze belangrijkste discussie, namelijk wat de mogelijke redenen achter deze fout zijn, en hoe die op te lossen.

Reden 1: Toegang tot de methode PasteSpecial zonder iets te kopiëren

Dit is de meest voorkomende reden achter de fout. Dat wil zeggen, proberen om de PasteSpecial methode zonder iets te kopiëren.

Om het duidelijk te begrijpen, moet u het volgende controleren VBA code.

⧭ VBA-code:

 Sub PlakkenSpeciaal_Method_van_Range_Class_Failed() Selectie.PlakkenSpeciaal Plakken:=xlFormules, Werking:=xlNone, SkipBlanks:=False, Transponeren:=False Einde Sub 

Hier hebben we de PasteSpecial methode van VBA zonder iets te kopiëren. Excel zal dus een run-time error 1004 als je het uitvoert.

⧭ Oplossing:

Om dit probleem op te lossen, moet u eerst een cellenbereik kopiëren en vervolgens het PasteSpecial methode.

 Sub PasteSpecial_Method_of_Range_Class_Failed() Application.Range("B3:B5").Copy Selection.PasteSpecial Paste:=xlFormulas, Operation:=xlNone, SkipBlanks:=False, Transpose:=False End Sub 

Wanneer u deze code uitvoert, plakt hij de formules van het bereik B3:B5 van het actieve werkblad naar het geselecteerde bereik.

Lees meer: PlakSpeciale Methode van Werkbladklas mislukt (Redenen & Oplossingen)

Reden 2: Toegang tot methode PasteSpecial met spelfout

Dit is een andere veel voorkomende reden achter de fout. Dat wil zeggen, om toegang te krijgen tot de PasteSpecial methode met spelfout(en) in enig argument.

Kijk naar het volgende VBA code om het duidelijk te maken. Hier hebben we een spelfout gemaakt in het argument xlPasteAll .

⧭ VBA-code:

 Sub PasteSpecial_Method_of_Range_Class_Failed() Application.Range("B3:B5").Copy Selection.PasteSpecial Plakken:=xlPaseAll End Sub 

Als je deze code uitvoert, krijg je de run-time error 1004 .

⧭ Oplossing:

De oplossing is eenvoudig. Dat heb je vast al geraden. Zorg er gewoon voor dat de spelling van alle argumenten correct is.

En de fout zal automatisch verdwijnen.

Lees meer: Hoe de opdracht Plakken speciaal in Excel gebruiken (5 geschikte manieren)

Vergelijkbare lezingen

  • Excel VBA: Bereik kopiëren naar een andere werkmap
  • Waarden kopiëren en plakken naar de volgende lege rij met Excel VBA (3 voorbeelden)
  • VBA PlakSpeciaal toepassen en bronopmaak behouden in Excel
  • Hoe dezelfde waarde kopiëren naar meerdere cellen in Excel (4 methoden)
  • Excel VBA om rijen naar een ander werkblad te kopiëren op basis van criteria

Reden 3: Een nieuwe werkmap openen na het kopiëren, waardoor de kopieer/plakmodus wordt geannuleerd

Dit is een andere belangrijke reden achter de fout. Dat is, om iets te doen dat de kopieer/plak modus annuleert voor het plakken.

Kijk naar de volgende code voor een duidelijk begrip.

⧭ VBA-code:

 Sub PasteSpecial_Method_of_Range_Class_Failed() Workbooks("Workbook1.xlsx").Worksheets("Sheet1").Range("B3:B5").Select Selection.Copy Dim Workbook2 As Workbook Set Workbook2 = Workbooks.Add Workbook2.SaveAs Filename:=ThisWorkbook.Path & "\amp; "Workbook2.xlsx" Workbook2.Activate Workbook2.Unprotect Workbook2.Worksheets("Sheet1").Range("B3:B5").Select Selection.PasteSpecial Paste:=xlPasteAll.Einde Sub 

Hier hebben we het bereik gekopieerd B3:B5 van de Blad1 van een werkboek genaamd Werkboek1 .

Dan hebben we een nieuwe werkmap gemaakt met de naam Werkboek2 in dezelfde map en probeerde het gekopieerde bereik te plakken in het bereik B3:B5 van Blad1 van die werkmap.

Maar als we de code uitvoeren, verschijnt er een PasteSpecial Methode van Range klasse mislukt Fout, omdat op het moment dat we de nieuwe werkmap aanmaken, de kopieer/plakmodus zal worden geannuleerd.

⧭ Oplossing:

Om dit probleem op te lossen, schrijft u eerst de regels code op om de nieuwe werkmap genaamd Werkboek2 .

Voeg dan de lijnen in om te activeren Werkboek1 en kopieer het gewenste bereik daaruit.

En tenslotte, activeer Werkboek2 en plak daar het gekopieerde bereik.

 Sub PlakkenSpeciaal_Methode_van_Range_Class_Failed() Dim Werkboek2 Als Werkboek Stel Werkboek2 = Werkboeken.Toevoegen Werkboek2.OpslaanAls Bestandsnaam:=DitWerkboek.Pad & "Werkboek2.xlsx" Werkboeken("Werkboek1.xlsx").Activeren Werkbladen("Blad1").Bereik("B3:B5").Selecteren Selectie.Kopiëren Werkboek2.Activeren Werkbladen("Blad1").Bereik("B3:B5").Selecteren Selectie.PlakkenSpeciaal Plakken:=xlPasteAll Einde Sub 

Voer deze code uit. Het kopieert het bereik B3:B5 van Blad1 van Werkboek 1.

En plak het in Blad1 van de nieuw aangemaakte werkmap genaamd Werkboek2 .

⧭ Voorzorgsmaatregel:

Vergeet natuurlijk niet om Werkboek1 open tijdens het uitvoeren van de code.

Lees meer: Hoe kopiëren en plakken in Excel uitschakelen zonder macro's (met 2 criteria)

Reden 4: Door Application.CutCopyMode op False te zetten wordt de Kopieer/Plakmodus geannuleerd.

Ten slotte kan er nog een andere reden zijn voor de fout. We kunnen de Toepassing.CutCopyMode ten onrechte voor toegang tot de PasteSpecial methode.

Hoewel het niet erg gebruikelijk is, doen we het toch soms als we met een groot aantal regels moeten werken.

Zie de volgende code om het duidelijk te begrijpen. Hier hebben we het bereik gekopieerd B3:B5 maar annuleerde de CutCopyMode alvorens het te plakken.

⧭ VBA-code:

 Sub PasteSpecial_Method_of_Range_Class_Failed() Range("B3:B5").Copy Application.CutCopyMode = False Range("D3:D5").PasteSpecial Paste:=xlPasteAll End Sub 

Wanneer je de code uitvoert, zal het de PasteSpecial Methode van Range klasse mislukt fout.

⧭ Oplossing:

Ik denk dat jullie nu allemaal de oplossing wel geraden hebben. Het is eigenlijk heel eenvoudig. Verwijder gewoon de regel uit de code die de CutCopy modus uit.

Dus, de juiste VBA code zal zijn:

 Sub PasteSpecial_Method_of_Range_Class_Failed() Range("B3:B5").Copy Range("D3:D5").PasteSpecial Paste:=xlPasteAll End Sub 

Het zal het bereik kopiëren B3:B5 en plak het over de D3:D5 zonder problemen.

Lees meer: VBA-plakken om waarden en formaten te kopiëren in Excel (9 voorbeelden)

Dingen om te onthouden

Hier heb ik alleen de problemen getoond die u kunt tegenkomen bij het werken met de PasteSpecial methode in VBA. Als u de PasteSpecial methode in detail, bezoek deze link .

Conclusie

Dus, in het kort, dit zijn de redenen die kunnen leiden tot de run-time error 1004: PasteSpecial Method od Range Class mislukt in je code. Ik hoop dat je alle punten duidelijk hebt begrepen en dat deze je in de toekomst veel zullen helpen. Weet je nog andere redenen? En heb je problemen? Vraag het ons gerust. En vergeet niet onze site te bezoeken ExcelWIKI voor meer berichten en updates.

Hugh West is een zeer ervaren Excel-trainer en -analist met meer dan 10 jaar ervaring in de branche. Hij heeft een bachelor in Accounting en Finance en een master in Business Administration. Hugh heeft een passie voor lesgeven en heeft een unieke lesaanpak ontwikkeld die gemakkelijk te volgen en te begrijpen is. Zijn deskundige kennis van Excel heeft duizenden studenten en professionals over de hele wereld geholpen hun vaardigheden te verbeteren en uit te blinken in hun carrière. Via zijn blog deelt Hugh zijn kennis met de wereld en biedt hij gratis Excel-tutorials en online trainingen aan om individuen en bedrijven te helpen hun volledige potentieel te bereiken.