Chyba času běhu 1004: Metoda PasteSpecial třídy Range selhala

  • Sdílet Toto
Hugh West

Jedním z nejčastějších problémů, se kterými se setkáváme při práci s kopírování a vkládání ve VBA je chyba času běhu 1004 : Selhání metody PasteSpecial třídy Range V tomto článku vám ukážu, jaké jsou možné příčiny této chyby a jak je vyřešit, a to na vhodných příkladech a ilustracích.

Stáhnout cvičebnici

Stáhněte si tento cvičební sešit a procvičujte si při čtení tohoto článku.

Metoda PasteSpecial selhala.xlsm

Selhání metody PasteSpecial třídy Range: příčiny a řešení

Bez dalšího zdržování přejděme k naší hlavní diskusi. Tedy k tomu, jaké mohou být možné příčiny této chyby a jak je vyřešit.

Důvod 1: Přístup k metodě PasteSpecial bez kopírování čehokoli

To je nejčastější příčina chyby. To znamená, že se snažíte přistupovat k souboru PasteSpecial bez kopírování čehokoli.

Abyste tomu jasně porozuměli, zkontrolujte následující údaje. 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 

Zde jsme použili PasteSpecial metoda VBA bez kopírování čehokoli. Excel tedy zobrazí položku chyba běhu 1004 když ji spustíte.

⧭ Řešení:

Chcete-li tento problém vyřešit, musíte nejprve zkopírovat rozsah buněk a poté přistoupit k položce PasteSpecial metoda.

 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 spuštění tohoto kódu se vloží vzorce rozsahu B3:B5 aktivního listu do vybraného rozsahu.

Přečtěte si více: Metoda PasteSpecial třídy pracovního listu selhala (důvody & řešení)

Důvod 2: Přístup k metodě PasteSpecial s pravopisnou chybou

To je další častý důvod chyby. To znamená, že pro přístup k PasteSpecial metoda s pravopisnou chybou (chybami) v jakémkoli argumentu.

Podívejte se na následující VBA kódu, aby to bylo jasné. Zde jsme udělali pravopisnou chybu v argumentu xlPasteAll .

⧭ Kód VBA:

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

Po spuštění tohoto kódu se zobrazí následující zpráva. chyba běhu 1004 .

⧭ Řešení:

Řešení je snadné, určitě jste to už uhodli. Jen se ujistěte, že všechny argumenty byly napsány správně.

Chyba automaticky zmizí.

Přečtěte si více: Jak používat speciální příkaz Vložit v aplikaci Excel (5 vhodných způsobů)

Podobná čtení

  • Excel VBA: Kopírování rozsahu do jiného sešitu
  • Kopírování a vkládání hodnot do dalšího prázdného řádku pomocí aplikace Excel VBA (3 příklady)
  • Použití funkce VBA PasteSpecial a zachování formátování zdroje v aplikaci Excel
  • Jak zkopírovat stejnou hodnotu do více buněk v aplikaci Excel (4 metody)
  • Kopírování řádků aplikace Excel VBA do jiného pracovního listu na základě kritérií

Důvod 3: Otevření nového sešitu po kopírování, které zruší režim kopírování/vkládání

To je další důležitý důvod, který stojí za chybou. Tedy provést něco, co zruší režim kopírování/vkládání před vložením.

Podívejte se na následující kód, abyste jej jasně pochopili.

⧭ Kód VBA:

 Sub PasteSpecial_Method_of_Range_Class_Failed() Sešity("Sešit1.xlsx").Pracovní listy("List1").Rozsah("B3:B5").Výběr Výběr.Kopírovat Dim Sešit2 As Sešit Set Sešit2 = Sešity.Add Sešit2.SaveAs Název souboru:=ThisWorkbook.Path & "\" & "Sešit2.xlsx" Sešit2.Activate Sešit2.Unprotect Sešit2.Pracovní listy("List1").Rozsah("B3:B5").Výběr Výběr.VložitSpecial Paste:=xlPasteAllEnd Sub 

Zde jsme zkopírovali rozsah B3:B5 z List1 sešitu s názvem Pracovní sešit1 .

Pak jsme vytvořili nový sešit s názvem Pracovní sešit2 ve stejné složce a pokusil se zkopírovaný rozsah vložit do rozsahu B3:B5 z List1 tohoto sešitu.

Když však kód spustíme, zobrazí se zpráva. Selhání metody PasteSpecial třídy Range Chyba, protože v okamžiku, kdy vytvoříme nový sešit. režim kopírování/vkládání budou zrušeny.

⧭ Řešení:

Chcete-li tento problém vyřešit, napište nejprve řádky kódu pro vytvoření nového sešitu s názvem Pracovní sešit2 .

Pak vložte řádky pro aktivaci Pracovní sešit1 a zkopírujte z něj požadovaný rozsah.

A nakonec aktivujte Pracovní sešit2 a vložte do něj zkopí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 

Spusťte tento kód. Zkopíruje rozsah B3:B5 z List1 z Cvičebnice1.

A vložte ji do List1 nově vytvořeného sešitu s názvem Pracovní sešit2 .

⧭ Opatrnost:

Samozřejmě nezapomeňte na to. Pracovní sešit1 otevřené během spouštění kódu.

Přečtěte si více: Jak zakázat kopírování a vkládání v aplikaci Excel bez maker (pomocí 2 kritérií)

Důvod 4: Nastavení Application.CutCopyMode na False, které zruší režim kopírování/vkládání

Nakonec může existovat ještě jeden důvod, proč k chybě dochází. Můžeme vypnout funkci Application.CutCopyMode omylem před přístupem k PasteSpecial metoda.

Ačkoli to není příliš běžná praxe, přesto ji někdy používáme, když máme pracovat s dlouhým počtem řádků.

Pro lepší pochopení viz následující kód. Zde jsme zkopírovali rozsah B3:B5 , ale zrušil CutCopyMode před 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 

Když kód spustíte, zobrazí se. Selhání metody PasteSpecial třídy Range chyba.

⧭ Řešení:

Předpokládám, že už všichni tušíte, jak to vyřešit. Je to vlastně docela jednoduché. Stačí z kódu odstranit řádek, který mění funkci CutCopy režim vypnuto.

Takže správný VBA kód bude:

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

Zkopíruje rozsah B3:B5 a vložte ji nad D3:D5 bez jakýchkoli potíží.

Přečtěte si více: Speciální funkce VBA Vložit pro kopírování hodnot a formátů v aplikaci Excel (9 příkladů)

Na co nezapomenout

Zde jsem uvedl pouze potíže, se kterými se můžete setkat při práci se systémem. PasteSpecial metoda v VBA. Pokud chcete znát PasteSpecial metodu podrobněji, navštivte tento odkaz .

Závěr

Stručně řečeno, toto jsou důvody, které mohou způsobit. chyba běhu 1004: Metoda PasteSpecial od třídy Range selhala ve vašem kódu. Doufám, že jste všechny body pochopili jasně a že vám tyto body v budoucnu hodně pomohou. Znáte nějaké další důvody? A máte nějaké problémy? Neváhejte se nás zeptat. A nezapomeňte navštívit naše stránky. ExcelWIKI pro další příspěvky a aktualizace.

Hugh West je velmi zkušený školitel a analytik Excelu s více než 10 lety zkušeností v oboru. Má bakalářský titul v oboru Účetnictví a finance a magisterský titul v oboru Business Administration. Hugh má vášeň pro výuku a vyvinul jedinečný přístup k výuce, který lze snadno sledovat a pochopit. Jeho odborné znalosti Excelu pomohly tisícům studentů a profesionálů po celém světě zlepšit své dovednosti a vyniknout ve své kariéře. Prostřednictvím svého blogu Hugh sdílí své znalosti se světem a nabízí bezplatné výukové programy Excelu a online školení, které jednotlivcům a firmám pomohou dosáhnout jejich plného potenciálu.