Käitusaegne viga 1004: Range klassi PasteSpecial meetod ebaõnnestus

  • Jaga Seda
Hugh West

Üks levinumaid probleeme, millega me töö käigus kokku puutume, on kopeerimine ja kleepimine VBAs on tööaja viga 1004 : Range klassi PasteSpecial meetod ebaõnnestus Selles artiklis näitan teile, millised on selle vea võimalikud põhjused ja kuidas neid lahendada, koos asjakohaste näidete ja illustratsioonidega.

Lae alla praktiline töövihik

Lae alla see harjutusvihik, et seda artiklit lugedes harjutada.

PasteSpecial meetod ebaõnnestus.xlsm

Range-klassi PasteSpecial meetod ebaõnnestus: põhjused ja lahendused

Ilma pikema viivituseta läheme meie peamise arutelu juurde. See tähendab, millised võivad olla selle vea võimalikud põhjused ja kuidas neid lahendada.

Põhjus 1: juurdepääs PasteSpecial meetodile ilma midagi kopeerimata

See on kõige tavalisem vea põhjus. See tähendab, et üritades pääseda ligi PasteSpecial meetodit ilma midagi kopeerimata.

Et sellest selgelt aru saada, kontrollige järgmist VBA kood.

⧭ VBA kood:

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

Siin oleme kasutanud PasteSpecial meetod VBA ilma midagi kopeerimata. Nii et Excel kuvab tööaegne viga 1004 kui te seda käivitate.

⧭ Lahendus:

Selle probleemi lahendamiseks tuleb kõigepealt kopeerida rakkude vahemik ja seejärel pääseda juurde PasteSpecial meetod.

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

Kui te käivitate selle koodi, kleebib see valemid vahemikku B3:B5 aktiivse töölehe valitud vahemikku.

Loe edasi: Töölehe klassi PasteSpecial meetod ebaõnnestus (Põhjused & Lahendused)

Põhjus 2: juurdepääs PasteSpecial meetodile koos õigekirjaveaga

See on teine levinud põhjus vea taga. See tähendab, et juurdepääsuks PasteSpecial meetodi puhul, mille mis tahes argumendis on õigekirjavigu(d).

Vaadake järgmist VBA koodi selgeks teha. Siin oleme teinud kirjavea argumendis xlPasteAll .

⧭ VBA kood:

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

Selle koodi käivitamisel saad sa järgmise tulemuse tööaegne viga 1004 .

⧭ Lahendus:

Lahendus on lihtne. Ma olen kindel, et sa oled seda juba ära arvanud. Lihtsalt veendu, et kõigi argumentide õigekirjutus on õigesti tehtud.

Ja viga kaob automaatselt.

Loe edasi: Kuidas kasutada Exceli spetsiaalset käsku Paste Special (5 sobivat viisi)

Sarnased lugemised

  • Excel VBA: vahemiku kopeerimine teise töövihikusse
  • Väärtuste kopeerimine ja kleepimine Exceli VBAga järgmisele tühjale reale (3 näidet)
  • Rakendage VBA PasteSpecial ja säilitage Exceli allikas vormindamine
  • Kuidas kopeerida sama väärtus mitmesse lahtrisse Excelis (4 meetodit)
  • Exceli VBA ridade kopeerimiseks teisele töölehele kriteeriumide alusel

Põhjus 3: Uue töövihiku avamine pärast kopeerimist, mis tühistab kopeerimis-/liitmisrežiimi

See on veel üks oluline põhjus vea taga. See tähendab, et teha midagi, mis tühistab kopeerimise/liitmise režiimi enne kleepimist.

Vaadake järgnevat koodi, et sellest selgelt aru saada.

⧭ VBA kood:

 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 & "\" & "Workbook2.xlsx" Workbook2.Activate Workbook2.Unprotect Workbook2.Worksheets("Sheet1").Range("B3:B5").Select Selection.PasteSpecial Paste:=xlPasteAllEnd Sub 

Siia oleme kopeerinud vahemiku B3:B5 alates Leht1 töövihiku nimega Töövihik1 .

Siis oleme loonud uue töövihiku nimega Töövihik2 samas kaustas ja püüdis kopeeritud vahemikku kleepida vahemikku B3:B5 aadressilt Leht1 selle töövihiku kohta.

Aga kui me käivitame koodi, siis kuvatakse ekraanile Range klassi PasteSpecial meetod ebaõnnestus Viga, sest hetkel, mil me loome uue töövihiku, on kopeerimise ja kleepimise režiim tühistatakse.

⧭ Lahendus:

Selle probleemi lahendamiseks kirjutage kõigepealt üles koodiread, et luua uus töövihik nimega Töövihik2 .

Seejärel sisestage read, et aktiveerida Töövihik1 ja kopeeri sealt soovitud vahemik.

Ja lõpuks, aktiveerige Töövihik2 ja kleepige sinna kopeeritud vahemik.

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

Käivita see kood. See kopeerib vahemiku B3:B5 aadressilt Leht1 aadressilt Töövihik1.

Ja kleebi see sisse Leht1 äsja loodud töövihiku nimega Töövihik2 .

⧭ Ettevaatus:

Loomulikult ärge unustage hoida Töövihik1 koodi käivitamise ajal avatud.

Loe edasi: Kuidas keelata kopeerimine ja kleepimine Excelis ilma makrota (koos 2 kriteeriumiga)

Põhjus 4: Application.CutCopyMode'i muutmine valeks, mis tühistab kopeerimis-/liitmisrežiimi.

Lõpuks võib olla veel üks põhjus, miks viga juhtub. Võime välja lülitada Application.CutCopyMode ekslikult enne juurdepääsu PasteSpecial meetod.

Kuigi see ei ole väga levinud praktika, teeme seda siiski mõnikord, kui peame töötama pika arvu ridadega.

Vaata järgnevat koodi, et sellest selgelt aru saada. Siia oleme kopeerinud vahemiku B3:B5 , kuid tühistas CutCopyMode enne kleepimist.

⧭ VBA kood:

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

Kui te käivitate koodi, siis näitab see, et Range klassi PasteSpecial meetod ebaõnnestus viga.

⧭ Lahendus:

Ma arvan, et nüüdseks olete kõik lahenduse ära arvanud. Tegelikult on see üsna lihtne. Lihtsalt eemaldage koodist rida, mis muudab funktsiooni CutCopy välja lülitatud.

Nii et õige VBA kood on:

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

See kopeerib vahemiku B3:B5 ja kleebi see üle D3:D5 ilma probleemideta.

Loe edasi: VBA Paste Special Exceli väärtuste ja vormingute kopeerimiseks (9 näidet)

Asjad, mida meeles pidada

Siin olen näidanud ainult neid probleeme, millega te töötades võite kokku puutuda. PasteSpecial meetodi VBA. Kui soovite teada PasteSpecial meetodit üksikasjalikult, külastage see link .

Kokkuvõte

Niisiis, lühidalt, need on põhjused, mis võivad põhjustada tööaegne viga 1004: PasteSpecial meetod od Range klassi ebaõnnestus oma koodis. Ma loodan, et saite kõikidest punktidest selgelt aru ja need aitavad teid tulevikus palju. Kas te teate veel mingeid põhjusi? Ja kas teil on mingeid probleeme? Küsige julgelt. Ja ärge unustage külastada meie veebilehte ExcelWIKI rohkem postitusi ja uuendusi.

Hugh West on suurte kogemustega Exceli koolitaja ja analüütik, kellel on selles valdkonnas üle 10-aastane kogemus. Tal on raamatupidamise ja rahanduse bakalaureusekraad ning ärijuhtimise magistrikraad. Hugh’l on kirg õpetamise vastu ning ta on välja töötanud ainulaadse õpetamisviisi, mida on lihtne järgida ja mõista. Tema Exceli ekspertteadmised on aidanud tuhandetel õpilastel ja spetsialistidel üle maailma oma oskusi parandada ja karjääris silma paista. Oma ajaveebi kaudu jagab Hugh oma teadmisi maailmaga, pakkudes tasuta Exceli õpetusi ja veebikoolitusi, mis aitavad üksikisikutel ja ettevõtetel oma potentsiaali täielikult ära kasutada.