Chyba času behu 1004: Metóda PasteSpecial triedy Range zlyhala

  • Zdieľajte To
Hugh West

Jedným z najčastejších problémov, s ktorými sa stretávame pri práci s kopírovanie a vkladanie vo VBA je chyba času behu 1004 : Zlyhala metóda PasteSpecial triedy Range V tomto článku vám ukážem, aké sú možné príčiny tejto chyby a ako ich vyriešiť, a to na vhodných príkladoch a ilustráciách.

Stiahnite si cvičebnicu

Stiahnite si tento cvičebný zošit, aby ste si počas čítania tohto článku precvičili svoje zručnosti.

Zlyhanie metódy PasteSpecial.xlsm

Zlyhanie metódy PasteSpecial triedy Range: príčiny a riešenia

Bez ďalšieho zdržiavania prejdime k našej hlavnej diskusii. To znamená, aké môžu byť možné príčiny tejto chyby a ako ich vyriešiť.

Dôvod 1: Prístup k metóde PasteSpecial bez kopírovania čohokoľvek

Toto je najčastejší dôvod chyby. To znamená, že sa pokúšate získať prístup k PasteSpecial bez kopírovania čohokoľvek.

Aby ste to pochopili, skontrolujte nasledujúce informácie VBA kód.

⧭ Kód VBA:

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

Tu sme použili PasteSpecial metóda VBA bez kopírovania čohokoľvek. Takže Excel zobrazí chyba počas behu 1004 keď ho spustíte.

⧭ Riešenie:

Ak chcete tento problém vyriešiť, musíte najprv skopírovať rozsah buniek a potom získať prístup k PasteSpecial metóda.

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

Po spustení tohto kódu sa vložia vzorce rozsahu B3:B5 aktívneho pracovného hárka na vybraný rozsah.

Prečítajte si viac: Metóda PasteSpecial triedy pracovného hárku zlyhala (dôvody a riešenia)

Dôvod 2: Prístup k metóde PasteSpecial s pravopisnou chybou

Toto je ďalší častý dôvod chyby. To znamená, že na prístup k PasteSpecial metóda s pravopisnou chybou (chybami) v ktoromkoľvek argumente.

Pozrite sa na tieto informácie VBA kód, aby to bolo jasné. Tu sme urobili pravopisnú chybu v argumente xlPasteAll .

⧭ Kód VBA:

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

Po spustení tohto kódu sa zobrazí chyba počas behu 1004 .

⧭ Riešenie:

Riešenie je jednoduché. Určite ste to už uhádli. Stačí sa uistiť, že všetky argumenty boli napísané správne.

Chyba automaticky zmizne.

Prečítajte si viac: Ako používať špeciálny príkaz Vložiť v programe Excel (5 vhodných spôsobov)

Podobné čítania

  • Excel VBA: Kopírovanie rozsahu do iného zošita
  • Kopírovanie a vkladanie hodnôt do ďalšieho prázdneho riadku pomocou Excel VBA (3 príklady)
  • Použitie funkcie VBA PasteSpecial a zachovanie formátovania zdroja v programe Excel
  • Ako skopírovať rovnakú hodnotu do viacerých buniek v programe Excel (4 metódy)
  • Excel VBA na kopírovanie riadkov do iného pracovného hárka na základe kritérií

Dôvod 3: Otvorenie nového zošita po kopírovaní, ktoré zruší režim kopírovania/vkladania

Toto je ďalší dôležitý dôvod, ktorý stojí za chybou. To znamená, že treba urobiť niečo, čo zruší režim kopírovania/vkladania pred vložením.

Pozrite sa na nasledujúci kód, aby ste ho jasne pochopili.

⧭ Kód VBA:

 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:=xlPasteAllKoniec Sub 

Tu sme skopírovali rozsah B3:B5 z List1 zošita s názvom Pracovný zošit1 .

Potom sme vytvorili nový zošit s názvom Pracovný zošit2 v tom istom priečinku a pokúsil sa skopírovaný rozsah vložiť do rozsahu B3:B5 z List1 tohto zošita.

Ale keď spustíme kód, zobrazí sa Zlyhala metóda PasteSpecial triedy Range Chyba, pretože v okamihu, keď vytvoríme nový zošit. režim kopírovania/vkladania sa zruší.

⧭ Riešenie:

Ak chcete vyriešiť tento problém, najprv si zapíšte riadky kódu na vytvorenie nového zošita s názvom Pracovný zošit2 .

Potom vložte riadky na aktiváciu Pracovný zošit1 a skopírujte z neho požadovaný rozsah.

A nakoniec aktivujte Pracovný zošit2 a vložte tam skopírovaný rozsah.

 Sub PasteSpecial_Method_of_Range_Class_Failed() Dim Workbook2 As Workbook Set Workbook2 = Workbooks.Add Workbook2.SaveAs Filename:=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 

Spustite tento kód. Skopíruje rozsah B3:B5 z adresy List1 z Pracovný zošit1.

A vložte ho do List1 novovytvoreného zošita s názvom Pracovný zošit2 .

⧭ Opatrnosť:

Samozrejme, nezabudnite na Pracovný zošit1 otvorené počas spúšťania kódu.

Prečítajte si viac: Ako zakázať kopírovanie a vkladanie v programe Excel bez makier (pomocou 2 kritérií)

Dôvod č. 4: Nastavenie položky Application.CutCopyMode na hodnotu False, ktorá zruší režim kopírovania/vkladania

Nakoniec môže existovať ďalší dôvod, prečo sa chyba vyskytla. Môžeme vypnúť Application.CutCopyMode omylom pred prístupom k PasteSpecial metóda.

Aj keď to nie je veľmi častý postup, predsa len ho niekedy robíme, keď máme pracovať s dlhým počtom riadkov.

Pozrite si nasledujúci kód, aby ste mu porozumeli. Tu sme skopírovali rozsah B3:B5 , ale zrušil CutCopyMode pred vložením.

⧭ Kód VBA:

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

Keď spustíte kód, zobrazí sa Zlyhala metóda PasteSpecial triedy Range chyba.

⧭ Riešenie:

Hádam ste už všetci uhádli riešenie. Je to vlastne celkom jednoduché. Stačí z kódu odstrániť riadok, ktorý mení CutCopy režim vypnutý.

Takže správny VBA kód bude:

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

Skopíruje rozsah B3:B5 a vložte ho nad D3:D5 bez akýchkoľvek problémov.

Prečítajte si viac: Špeciálna funkcia VBA Paste na kopírovanie hodnôt a formátov v programe Excel (9 príkladov)

Čo si treba zapamätať

Tu som uviedol len problémy, s ktorými sa môžete stretnúť pri práci s PasteSpecial metóda v VBA. Ak chcete poznať PasteSpecial metódu, navštívte toto prepojenie .

Záver

Takže v skratke, toto sú dôvody, ktoré môžu spôsobiť chyba počas behu 1004: Metóda PasteSpecial od triedy Range zlyhala vo vašom kóde. Dúfam, že ste jasne pochopili všetky body a tie vám v budúcnosti veľmi pomôžu. Viete o nejakých ďalších dôvodoch? A máte nejaké problémy? Neváhajte sa nás opýtať. A nezabudnite navštíviť našu stránku ExcelWIKI pre ďalšie príspevky a aktualizácie.

Hugh West je veľmi skúsený tréner a analytik Excelu s viac ako 10-ročnými skúsenosťami v tomto odvetví. Má bakalársky titul v odbore účtovníctvo a financie a magisterský titul v odbore Business Administration. Hugh má vášeň pre vyučovanie a vyvinul jedinečný vyučovací prístup, ktorý sa dá ľahko sledovať a pochopiť. Jeho odborné znalosti Excelu pomohli tisíckam študentov a profesionálov na celom svete zlepšiť svoje zručnosti a vyniknúť vo svojej kariére. Hugh sa prostredníctvom svojho blogu delí o svoje znalosti so svetom a ponúka bezplatné výukové programy Excelu a online školenia, ktoré jednotlivcom a firmám pomôžu naplno využiť ich potenciál.