Suoritusaikavirhe 1004: Range-luokan PasteSpecial-menetelmä epäonnistui.

  • Jaa Tämä
Hugh West

Yksi yleisimmistä ongelmista, joita kohtaamme työskennellessämme seuraavien kanssa kopiointi ja liittäminen VBA:ssa on ajoaikavirhe 1004 : Range-luokan PasteSpecial-metodi epäonnistui Tässä artikkelissa näytän sinulle, mitkä mahdolliset syyt ovat tämän virheen takana ja miten ne ratkaistaan, asianmukaisten esimerkkien ja kuvien avulla.

Lataa harjoituskirja

Lataa tämä harjoituskirja, jotta voit harjoitella tätä artikkelia lukiessasi.

PasteSpecial-menetelmä epäonnistui.xlsm

Range-luokan PasteSpecial-metodi epäonnistui: Syyt ja ratkaisut

Siirrymme viipymättä pääkeskusteluumme, eli siihen, mitkä voivat olla mahdollisia syitä tämän virheen taustalla ja miten ne voidaan ratkaista.

Syy 1: PasteSpecial-menetelmän käyttäminen ilman minkään kopiointia

Tämä on yleisin syy virheen taustalla. Tämä tarkoittaa, että kun yritetään käyttää tiedostoa PasteSpecial menetelmää kopioimatta mitään.

Tarkista seuraavat seikat, jotta ymmärrät sen selvästi. VBA koodi.

⧭ VBA-koodi:

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

Tässä olemme käyttäneet PasteSpecial menetelmä VBA kopioimatta mitään. Excel näyttää siis taulukon ajonaikainen virhe 1004 kun käytät sitä.

⧭ Ratkaisu:

Tämän ongelman ratkaisemiseksi sinun on ensin kopioitava solualue ja sen jälkeen käytettävä solujen PasteSpecial menetelmä.

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

Kun suoritat tämän koodin, se liittää alueen kaavat seuraavasti B3:B5 aktiivisen laskentataulukon valittuun alueeseen.

Lue lisää: PasteSpecial -menetelmä työarkkiluokassa epäonnistui (Syyt & Ratkaisut)

Syy 2: PasteSpecial-metodin käyttäminen kirjoitusvirheellä

Tämä on toinen yleinen syy virheen taustalla. Toisin sanoen, jos haluat käyttää PasteSpecial menetelmä, jossa on kirjoitusvirhe(i)ä missä tahansa argumentissa.

Katso seuraavaa VBA Tässä on kirjoitusvirhe argumentissa, joka on kirjoitettu seuraavasti xlPasteAll .

⧭ VBA-koodi:

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

Kun suoritat tämän koodin, saat näkyviin ajonaikainen virhe 1004 .

⧭ Ratkaisu:

Ratkaisu on helppo. Olet varmasti jo arvannut sen. Varmista vain, että kaikkien argumenttien oikeinkirjoitus on tehty oikein.

Virhe katoaa automaattisesti.

Lue lisää: Kuinka käyttää Paste Special -komentoa Excelissä (5 sopivaa tapaa)

Samanlaisia lukemia

  • Excel VBA: Kopioi alue toiseen työkirjaan
  • Kopioi ja liitä arvot seuraavalle tyhjälle riville Excel VBA: lla (3 esimerkkiä)
  • Sovelletaan VBA PasteSpecial -ohjelmaa ja säilytetään lähteen muotoilu Excelissä.
  • Saman arvon kopioiminen useisiin soluihin Excelissä (4 menetelmää)
  • Excel VBA kopioida rivit toiseen laskentataulukkoon kriteerien perusteella

Syy 3: Uuden työkirjan avaaminen kopioinnin jälkeen peruuttaa kopiointi-/liittämistilan.

Tämä on toinen tärkeä syy virheen taustalla. Eli tehdä jotain, joka peruuttaa kopioi/liitä-tilan ennen liittämistä.

Katso seuraavaa koodia, jotta ymmärrät sen selvästi.

⧭ VBA-koodi:

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

Tähän olemme kopioineet alueen B3:B5 alkaen Sheet1 työkirjasta nimeltä Työkirja1 .

Sitten olemme luoneet uuden työkirjan nimeltä Työkirja2 samassa kansiossa ja yritin liittää kopioidun alueen alueeseen B3:B5 of Sheet1 kyseisen työkirjan.

Mutta kun suoritamme koodin, se näyttää koodin Range-luokan PasteSpecial-metodi epäonnistui Virhe, koska sillä hetkellä, kun luomme uuden työkirjan. kopioi/liitä-tila peruutetaan.

⧭ Ratkaisu:

Voit ratkaista tämän ongelman kirjoittamalla ensin koodirivit, joilla luodaan uusi työkirja nimeltä Työkirja2 .

Lisää sitten aktivoitavat rivit Työkirja1 ja kopioi siitä haluttu alue.

Ja lopuksi, aktivoi Työkirja2 ja liitä kopioitu alue sinne.

 Sub PasteSpecial_Method_of_Range_Class_Failed() Dim Workbook2 As Workbook Set Workbook2 = Workbooks.Add Workbook2.SaveAs Tiedostonimi:=ThisWorkbook.Path & "\" & "Workbook2.xlsx" Workbooks("Workbook1.xlsx").Activate Työarkit("Sheet1").Range("B3:B5").Select Valinta.Copy Workbook2.Activate Työarkit("Sheet1").Range("B3:B5").Select Valintavalikoima.LiitäPasteSpecial LiitäPaste:=xlPasteAll End Sub 

Suorita tämä koodi. Se kopioi alueen - B3:B5 osoitteesta Sheet1 of Työkirja1.

Ja liitä se Sheet1 äskettäin luodun työkirjan nimellä Työkirja2 .

⧭ Varovaisuus:

Älä tietenkään unohda pitää huolta siitä. Työkirja1 auki koodia suoritettaessa.

Lue lisää: Kopioinnin ja liittämisen poistaminen käytöstä Excelissä ilman makroja (2-kriteereillä)

Syy 4: Application.CutCopyMode-tilan muuttaminen vääräksi, joka peruuttaa kopiointi- ja liittämistilan.

Lopuksi, virheeseen voi olla toinenkin syy. Voimme kytkeä pois päältä ohjelman Application.CutCopyMode virheellisesti ennen kuin käytät PasteSpecial menetelmä.

Vaikka se ei olekaan kovin yleinen käytäntö, teemme sen silti joskus, kun joudumme työskentelemään pitkän rivimäärän kanssa.

Katso seuraava koodi, jotta ymmärrät sen selvästi. Tässä olemme kopioineet alueen B3:B5 , mutta peruutti CutCopyMode ennen sen liittämistä.

⧭ VBA-koodi:

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

Kun suoritat koodin, se näyttää kohdan Range-luokan PasteSpecial-metodi epäonnistui virhe.

⧭ Ratkaisu:

Ratkaisu on melko yksinkertainen. Poistetaan vain koodista rivi, joka muuttaa koodin CutCopy pois päältä.

Joten oikea VBA koodi on:

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

Se kopioi alueen B3:B5 ja liitä se D3:D5 ilman ongelmia.

Lue lisää: VBA Paste Special Excelin arvojen ja muotojen kopioimiseksi (9 esimerkkiä)

Muistettavat asiat

Tässä olen näyttänyt vain ne ongelmat, joita saatat kohdata työskennellessäsi ohjelman PasteSpecial menetelmä VBA. Jos haluat tietää PasteSpecial menetelmää yksityiskohtaisesti, käy osoitteessa tämä linkki .

Päätelmä

Lyhyesti sanottuna nämä ovat syitä, jotka voivat aiheuttaa suoritusaikavirhe 1004: PasteSpecial-metodi od Range-luokassa epäonnistui. Toivottavasti olet ymmärtänyt kaikki kohdat selkeästi ja ne auttavat sinua paljon tulevaisuudessa. Tiedätkö muita syitä? Ja onko sinulla ongelmia? Kysy meiltä rohkeasti. Äläkä unohda vierailla sivustollamme. ExcelWIKI lisää viestejä ja päivityksiä.

Hugh West on erittäin kokenut Excel-kouluttaja ja analyytikko, jolla on yli 10 vuoden kokemus alalta. Hän on koulutukseltaan laskentatoimen ja rahoituksen kandidaatti sekä kauppatieteiden maisteri. Hughilla on intohimo opettamiseen, ja hän on kehittänyt ainutlaatuisen opetusmenetelmän, jota on helppo seurata ja ymmärtää. Hänen asiantuntemuksensa Excelistä on auttanut tuhansia opiskelijoita ja ammattilaisia ​​maailmanlaajuisesti parantamaan taitojaan ja menestymään urallaan. Blogissaan Hugh jakaa tietämyksensä maailman kanssa tarjoamalla ilmaisia ​​Excel-opetusohjelmia ja verkkokoulutusta auttaakseen yksilöitä ja yrityksiä saavuttamaan täyden potentiaalinsa.