Obsah
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.xlsmZlyhanie 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.