Innholdsfortegnelse
Et av de vanligste problemene vi møter når vi jobber med kopiering og liming i VBA er kjøretidsfeilen 1004 : PasteSpecial Method of Range Class Failed . I denne artikkelen skal jeg vise deg hva de mulige årsakene er bak denne feilen og hvordan du løser dem, med riktige eksempler og illustrasjoner.
Last ned øvelsesarbeidsbok
Last ned denne øvelsesarbeidsboken for å trene mens du leser denne artikkelen.
PasteSpecial Method Failed.xlsm
PasteSpecial Method of Range Class Mislyktes: Årsaker og løsninger
La oss gå til hoveddiskusjonen vår uten ytterligere forsinkelser. Det vil si, hva kan være de mulige årsakene bak denne feilen, og hvordan de løses.
Grunn 1: Tilgang til PasteSpecial-metoden uten å kopiere noe
Dette er den mest vanlig årsak bak feilen. Det vil si å prøve å få tilgang til PasteSpecial -metoden uten å kopiere noe.
For å forstå det tydelig, sjekk følgende VBA kode.
⧭ VBA-kode:
6598
Her har vi brukt PasteSpecial -metoden til VBA uten kopiere hva som helst. Så Excel vil vise en run-time error 1004 når du kjører den.
⧭ Løsning:
For å løse dette problemet må du først kopiere en rekke celler og deretter få tilgang til PasteSpecial -metoden.
6788
Når du kjører denne koden, det villim inn formlene for området B3:B5 i det aktive regnearket til det valgte området.
Les mer: PasteSpecial-metode for regnearkklasse mislyktes (grunner og løsninger)
Årsak 2: Tilgang til PasteSpecial-metode med stavefeil
Dette er en annen vanlig årsak bak feil. Det vil si for å få tilgang til PasteSpecial metoden med stavefeil(er) i ethvert argument.
Se på følgende VBA -kode for å gjøre det klart. Her har vi skrevet en stavefeil i argumentet xlPasteAll .
⧭ VBA-kode:
2606
Når du kjører denne koden, får du kjøretidsfeil 1004 .
⧭ Løsning:
Løsningen er enkel. Jeg er sikker på at du allerede har gjettet det. Bare sørg for at stavemåten til alle argumentene er riktige.
Og feilen vil automatisk forsvinne.
Les mer: Hvordan bruke Lim inn Spesialkommando i Excel (5 egnede måter)
Lignende avlesninger
- Excel VBA: Kopier rekkevidde til en annen arbeidsbok
- Kopier og lim inn verdier til neste tomme rad med Excel VBA (3 eksempler)
- Bruk VBA PasteSpecial og behold kildeformatering i Excel
- Hvordan kopiere samme verdi i flere celler i Excel (4 metoder)
- Excel VBA for å kopiere rader til et annet regneark basert på kriterier
Grunn 3: Åpne en nyArbeidsbok etter kopiering som avbryter kopiering/lim inn-modus
Dette er en annen viktig årsak bak feilen. Det vil si å gjøre noe som avbryter kopier/lim inn-modus før liming.
Se på følgende kode for å forstå tydelig.
⧭ VBA-kode:
9783
Her har vi kopiert området B3:B5 fra Ark1 i en arbeidsbok kalt Workbook1 .
Så har vi laget en ny arbeidsbok kalt Arbeidsbok2 i samme mappe og prøvd å lime inn det kopierte området til området B3:B5 til Ark1 av den arbeidsboken.
Men når vi kjører koden, vil den vise en PasteSpecial Method of Range Class Failed feil, fordi i det øyeblikket vi oppretter den nye arbeidsboken, vil kopier/lim inn-modus vil bli avbrutt.
⧭ Løsning:
For å løse dette problemet, skriv først ned kodelinjene for å lage den nye arbeidsboken kalt Arbeidsbok2 .
Sett deretter inn linjene for å aktivere Arbeidsbok1 og kopier ønsket rekkevidde fra den.
Og til slutt, aktiver Workbook2 og lim inn det kopierte området der.
1223
Kjør denne koden. Den kopierer området B3:B5 fra Ark1 i Arbeidsbok1.
Og lim det inn inn i Ark1 i den nyopprettede arbeidsboken kalt Arbeidsbok2 .
⧭ Forsiktighetsregel:
Selvfølgelig, ikke glem å holde Arbeidsbok1 åpen mens du kjørerkode.
Les mer: Hvordan deaktiverer du kopiering og lim inn i Excel uten makroer (med 2 kriterier)
Grunn 4: Gjør Application.CutCopyMode til False som avbryter Copy/Paste-modus
Til slutt kan det være en annen grunn til at feilen oppstår. Vi kan slå av Application.CutCopyMode ved en feiltakelse før vi åpner PasteSpecial -metoden.
Selv om det ikke er en veldig vanlig praksis, gjør vi det likevel noen ganger når vi skal arbeid med et langt antall linjer.
Se følgende kode for å forstå det tydelig. Her har vi kopiert området B3:B5 , men kansellert CutCopyMode før vi limte det inn.
⧭ VBA-kode:
3253
Når du skal kjøre koden, vil den vise feilen PasteSpecial Method of Range Class Failed .
⧭ Løsning:
Jeg antar at dere alle har gjettet løsningen nå. Det er ganske enkelt faktisk. Bare fjern linjen fra koden som slår CutCopy -modusen av.
Så den riktige VBA -koden vil være:
5107
Den kopierer området B3:B5 og limer det inn over D3:D5 uten problemer.
Les mer: VBA Paste Special for å kopiere verdier og formater i Excel (9 eksempler)
Ting å huske
Her har jeg bare vist problemene du kan støte på mens du arbeider med PasteSpecial -metoden i VBA. Hvis duønsker å vite PasteSpecial -metoden i detalj, besøk denne lenken .
Konklusjon
Så, kort sagt, disse er årsakene som kan forårsake run-time error 1004: PasteSpecial Method od Range Class Failed i koden din. Jeg håper du har forstått alle punktene tydelig, og de vil hjelpe deg mye i fremtiden. Vet du noen andre grunner? Og har du noen problemer? Spør oss gjerne. Og ikke glem å besøke siden vår ExcelWIKI for flere innlegg og oppdateringer.