Körtidsfel 1004: PasteSpecial-metoden för Range Class misslyckades

  • Dela Detta
Hugh West

Ett av de vanligaste problemen som vi stöter på när vi arbetar med kopiera och klistra in i VBA är den körtidsfel 1004 : PasteSpecial-metoden för Range Class misslyckades . I den här artikeln ska jag visa dig vilka möjliga orsaker som ligger bakom detta fel och hur man löser dem, med hjälp av exempel och illustrationer.

Ladda ner övningsboken

Ladda ner den här arbetsboken för att träna medan du läser den här artikeln.

Den särskilda metoden PasteSpecial misslyckades.xlsm

PasteSpecial-metoden för Range Class misslyckades: Orsaker och lösningar

Låt oss utan dröjsmål gå vidare till vår huvuddiskussion, det vill säga vilka orsaker som kan ligga bakom detta fel och hur man löser dem.

Skäl 1: Tillgång till PasteSpecial-metoden utan att kopiera något

Detta är den vanligaste orsaken till felet, det vill säga att försöka komma åt Klistra inSpecial utan att kopiera något.

För att förstå det klart och tydligt bör du kontrollera följande VBA kod.

⧭ VBA-kod:

 Sub PasteSpecial_Method_of_Range_Class_Failed() Selection.PasteSpecial Paste:=xlFormulas, Operation:=xlNone, SkipBlanks:=False, Transpose:=False End Sub 

Här har vi använt Klistra inSpecial metod för att VBA utan att kopiera något. Excel visar alltså en Körtidsfel 1004 när du kör den.

⧭ Lösning:

För att lösa det här problemet måste du först kopiera ett antal celler och sedan öppna Klistra inSpecial metod.

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

När du kör den här koden klistrar den in formlerna i intervallet B3:B5 i det aktiva arbetsbladet till det valda området.

Läs mer: PasteSpecial Method of Worksheet Class misslyckades (orsaker & lösningar)

Orsak 2: Tillgång till PasteSpecial-metoden med stavfel

Detta är en annan vanlig orsak till felet. Det vill säga, för att få tillgång till Klistra inSpecial metod med stavfel i något argument.

Titta på följande VBA koden för att göra den tydlig. Här har vi gjort ett stavfel i argumentet xlPasteAll .

⧭ VBA-kod:

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

När du kör den här koden får du upp följande Körtidsfel 1004 .

⧭ Lösning:

Lösningen är enkel. Ni har säkert redan gissat det. Se bara till att alla argument stavas korrekt.

Felet försvinner automatiskt.

Läs mer: Hur du använder kommandot Klistra in specialkommandot i Excel (5 lämpliga sätt)

Liknande läsningar

  • Excel VBA: Kopiera intervall till en annan arbetsbok
  • Kopiera och klistra in värden till nästa tomma rad med Excel VBA (3 exempel)
  • Tillämpa VBA PasteSpecial och behåll källformateringen i Excel
  • Kopiera samma värde i flera celler i Excel (4 metoder)
  • Excel VBA för att kopiera rader till ett annat arbetsblad baserat på kriterier

Skäl 3: Öppna en ny arbetsbok efter kopiering som avbryter läget Kopiera/klistra in

Detta är en annan viktig orsak till felet, nämligen att göra något som avbryter läget kopiera/klistra in innan du klistrar in.

Titta på följande kod för att förstå den tydligt.

⧭ VBA-kod:

 Sub PasteSpecial_Method_of_Range_Class_Failed() Arbetsböcker("Workbook1.xlsx").Arbetsblad("Sheet1").Range("B3:B5").Select Selection.Copy Dim Workbook2 As Workbook Set Workbook2 = Workbooks.Add Workbook2.SaveAs Filename:=ThisWorkbook.Path & "\" & "Workbook2.xlsx" Workbook2.Activate Workbook2.Unprotect Workbook2.Worksheets("Sheet1").Range("B3:B5").Select Selection.PasteSpecial Paste:=xlPasteAllSlutar under 

Här har vi kopierat intervallet B3:B5 från Blad 1 i en arbetsbok som heter Arbetsbok1 .

Sedan har vi skapat en ny arbetsbok som heter Arbetsbok2 i samma mapp och försökte klistra in det kopierade intervallet i intervallet B3:B5 Blad 1 i arbetsboken.

Men när vi kör koden visas en PasteSpecial-metoden för Range Class misslyckades Fel, eftersom när vi skapar den nya arbetsboken, är det Kopiera/klistra in läge kommer att avbrytas.

⧭ Lösning:

För att lösa detta problem skriver du först ner kodraderna för att skapa den nya arbetsboken som heter Arbetsbok2 .

Lägg sedan in raderna för att aktivera Arbetsbok1 och kopiera det önskade intervallet därifrån.

Och slutligen, aktivera Arbetsbok2 och klistra in det kopierade intervallet där.

 Sub PasteSpecial_Method_of_Range_Class_Failed() Dim Workbook2 As Workbook Set Workbook2 = Workbooks.Add Workbook2.SaveAs Filnamn:=ThisWorkbook.Path & "\" & "Workbook2.xlsx" Workbooks("Workbook1.xlsx").Activate Arbetsblad("Sheet1").Range("B3:B5").Select Selection.Copy Workbook2.Activate Arbetsblad("Sheet1").Range("B3:B5").Select Selection.PasteSpecial Paste:=xlPasteAll End Sub 

Kör den här koden. Den kopierar intervallet B3:B5 från Blad 1 Arbetsbok1.

och klistra in den i Blad 1 i den nyligen skapade arbetsboken som heter Arbetsbok2 .

⧭ Försiktighet:

Glöm naturligtvis inte att behålla Arbetsbok1 öppen medan du kör koden.

Läs mer: Hur man inaktiverar kopiera och klistra in i Excel utan makron (med 2 kriterier)

Orsak 4: Om Application.CutCopyMode ändras till False avbryts kopierings-/klistringsläget.

Slutligen kan det finnas en annan orsak till att felet uppstår. Vi kan stänga av Application.CutCopyMode innan du går in i Klistra inSpecial metod.

Även om det inte är så vanligt, gör vi det ändå ibland när vi ska arbeta med ett stort antal rader.

Se följande kod för att förstå den tydligt. Här har vi kopierat intervallet B3:B5 , men avbröt CutCopyMode innan du klistrar in den.

⧭ VBA-kod:

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

När du kör koden kommer den att visa PasteSpecial-metoden för Range Class misslyckades fel.

⧭ Lösning:

Jag antar att ni alla nu har gissat lösningen. Det är faktiskt ganska enkelt: ta bort raden i koden som gör att CutCopy läge avstängt.

Den korrekta VBA koden kommer att vara:

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

Den kopierar intervallet B3:B5 och klistra in den över D3:D5 utan problem.

Läs mer: VBA-klistra in Special för att kopiera värden och format i Excel (9 exempel)

Saker att komma ihåg

Här har jag bara visat de problem som du kan stöta på när du arbetar med Klistra inSpecial metod i VBA. Om du vill veta hur Klistra inSpecial i detalj, se följande denna länk .

Slutsats

Så, i korthet, är detta de orsaker som kan orsaka Körtidsfel 1004: PasteSpecial Method od Range Class misslyckades i din kod. Jag hoppas att du har förstått alla punkter tydligt och att de kommer att hjälpa dig mycket i framtiden. Vet du några andra orsaker? Och har du några problem? Fråga oss gärna. Och glöm inte att besöka vår webbplats ExcelWIKI för fler inlägg och uppdateringar.

Hugh West är en mycket erfaren Excel-tränare och analytiker med över 10 års erfarenhet i branschen. Han har en kandidatexamen i redovisning och ekonomi och en magisterexamen i företagsekonomi. Hugh har en passion för undervisning och har utvecklat ett unikt undervisningssätt som är lätt att följa och förstå. Hans expertkunskap om Excel har hjälpt tusentals studenter och yrkesverksamma över hela världen att förbättra sina färdigheter och utmärka sig i sina karriärer. Genom sin blogg delar Hugh med sig av sin kunskap med världen, och erbjuder gratis Excel-handledning och onlineutbildning för att hjälpa individer och företag att nå sin fulla potential.