Futási hiba 1004: A Range osztály PasteSpecial metódusa sikertelen volt

  • Ossza Meg Ezt
Hugh West

Az egyik leggyakoribb probléma, amivel találkozunk, miközben a következő témákkal dolgozunk másolás és beillesztés VBA-ban a futási idő hiba 1004 : A Range osztály PasteSpecial metódusa sikertelen volt Ebben a cikkben megmutatom, hogy milyen lehetséges okok állnak a hiba hátterében, és hogyan lehet ezeket megoldani, megfelelő példákkal és illusztrációkkal.

Gyakorlati munkafüzet letöltése

Töltse le ezt a gyakorlati munkafüzetet, hogy gyakorolhasson, miközben ezt a cikket olvassa.

PasteSpecial módszer sikertelen.xlsm

A Range osztály PasteSpecial módszere sikertelen: okok és megoldások

További késlekedés nélkül térjünk rá a fő témánkra, vagyis arra, hogy mik lehetnek a hiba lehetséges okai, és hogyan lehet ezeket megoldani.

1. ok: A PasteSpecial módszer elérése bármi másolása nélkül

Ez a hiba leggyakoribb oka. Ez azt jelenti, hogy megpróbálja elérni a PasteSpecial módszerrel anélkül, hogy bármit is másolnánk.

A világos megértés érdekében ellenőrizze a következőket VBA kód.

⧭ VBA kód:

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

Itt a PasteSpecial módszer VBA anélkül, hogy bármit is másolna. Így az Excel megjelenít egy futási hiba 1004 amikor futtatja.

⧭ Megoldás:

A probléma megoldásához először is másolnia kell egy cellatartományt, majd elérnie a PasteSpecial módszer.

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

Amikor ezt a kódot futtatja, a program beilleszti a tartomány képleteit. B3:B5 az aktív munkalapon a kiválasztott tartományra.

Bővebben: A munkalap osztály PasteSpecial módszere sikertelen (okok és megoldások)

2. ok: A PasteSpecial módszer elérése helyesírási hibával

Ez a hiba másik gyakori oka. Azaz, hogy elérjük a PasteSpecial módszer bármelyik argumentumban található helyesírási hiba(k) esetén.

Nézze meg a következőket VBA Itt egy helyesírási hibát vétettünk az érvben. xlPasteAll .

⧭ VBA kód:

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

Amikor ezt a kódot futtatja, a következő eredményt kapja futási hiba 1004 .

⧭ Megoldás:

A megoldás egyszerű, biztos vagyok benne, hogy már kitaláltad. Csak győződj meg róla, hogy az összes érv helyesírása megtörtént.

És a hiba automatikusan eltűnik.

Bővebben: Hogyan használjuk a Paste Special parancsot az Excelben (5 megfelelő mód)

Hasonló olvasmányok

  • Excel VBA: Tartomány másolása egy másik munkafüzetbe
  • Értékek másolása és beillesztése a következő üres sorba az Excel VBA-val (3 példa)
  • A VBA PasteSpecial alkalmazása és a forrásformázás megtartása az Excelben
  • Hogyan másolhatja ugyanazt az értéket több cellába az Excelben (4 módszer)
  • Excel VBA a sorok másolásához egy másik munkalapra a kritériumok alapján

3. ok: Új munkafüzet megnyitása a másolás után, amely törli a másolás/beillesztés módot

Ez egy másik fontos ok a hiba mögött. Vagyis, hogy csináljunk valamit, ami a beillesztés előtt törli a másolás/beillesztés üzemmódot.

Nézze meg a következő kódot a világos megértéshez.

⧭ VBA kód:

 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:=xlPasteAll.End Sub 

Ide másoltuk a tartományt B3:B5 a Sheet1 nevű munkafüzet Munkafüzet1 .

Ezután létrehoztunk egy új munkafüzetet, melynek neve Munkafüzet2 ugyanabban a mappában, és megpróbáltam beilleszteni a másolt tartományt a tartományba. B3:B5 a Sheet1 a munkafüzetben.

De amikor futtatjuk a kódot, megjelenik egy A Range osztály PasteSpecial metódusa sikertelen volt Hiba, mert abban a pillanatban, amikor létrehozzuk az új munkafüzetet, a másolás/beillesztés mód törlésre kerül.

⧭ Megoldás:

A probléma megoldásához először írja le a kódsorokat, hogy létrehozza az új munkafüzetet, amelynek neve Munkafüzet2 .

Ezután illessze be a sorokat az aktiváláshoz Munkafüzet1 és másolja ki belőle a kívánt tartományt.

És végül, aktiválja Munkafüzet2 és illessze be oda a másolt tartományt.

 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 

Futtasd ezt a kódot. Ez másolja a tartományt B3:B5 a címről Sheet1 a Munkafüzet1.

És illessze be a Sheet1 az újonnan létrehozott munkafüzet Munkafüzet2 .

⧭ Óvatosság:

Természetesen ne felejtsd el, hogy tartsd Munkafüzet1 nyitva a kód futtatása közben.

Bővebben: Hogyan lehet letiltani a másolást és beillesztést az Excelben makrók nélkül (2 kritériumokkal)?

4. ok: Az Application.CutCopyMode hamisra kapcsolása, amely törli a másolási/beillesztési módot

Végül, a hiba bekövetkezésének más oka is lehet. Kikapcsolhatjuk a Application.CutCopyMode tévedésből, mielőtt hozzáférne a PasteSpecial módszer.

Bár ez nem túl gyakori gyakorlat, mégis néha előfordul, amikor hosszú sorokkal kell dolgoznunk.

Lásd a következő kódot, hogy világosan megértsd. Ide a tartományt másoltuk be. B3:B5 , de törölték a CutCopyMode mielőtt beillesztené.

⧭ VBA kód:

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

Amikor a kódot futtatod, akkor megjelenik a A Range osztály PasteSpecial metódusa sikertelen volt hiba.

⧭ Megoldás:

Gondolom, mostanra már mindannyian kitaláltátok a megoldást. Tulajdonképpen nagyon egyszerű. Csak távolítsátok el a kódból azt a sort, amely a CutCopy kikapcsolt üzemmód.

Tehát a helyes VBA kód lesz:

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

Lemásolja a tartományt B3:B5 és illessze be a D3:D5 minden gond nélkül.

Bővebben: VBA Paste Special az Excel értékek és formátumok másolásához (9 példa)

Emlékezetes dolgok

Itt csak azokat a problémákat mutattam be, amelyekkel a PasteSpecial módszer a VBA. Ha tudni szeretné a PasteSpecial módszerről részletesen, látogasson el a ez a link .

Következtetés

Tehát röviden, ezek azok az okok, amelyek miatt a futásidejű hiba 1004: PasteSpecial módszer a Range osztályban sikertelen a kódodban. Remélem, hogy minden pontot világosan megértettél, és ezek sokat segítenek majd a jövőben. Tudsz más okokat is? És van bármilyen problémád? Kérdezz bátran. És ne felejtsd el meglátogatni oldalunkat. ExcelWIKI további posztokért és frissítésekért.

Hugh West nagy tapasztalattal rendelkező Excel-oktató és elemző, több mint 10 éves tapasztalattal az iparágban. Számvitel és pénzügy szakos alapdiplomát, valamint üzleti adminisztrációból mesterképzést szerzett. Hugh szenvedélye a tanítás, és egyedülálló tanítási megközelítést dolgozott ki, amely könnyen követhető és érthető. Az Excelben szerzett szakértői tudása világszerte több ezer diáknak és szakembernek segített abban, hogy készségeiket és karrierjüket kiválóan teljesítsék. Hugh blogján keresztül megosztja tudását a világgal, ingyenes Excel-oktatóanyagokat és online képzéseket kínálva, hogy segítse az egyéneket és a vállalkozásokat teljes potenciáljuk kibontakoztatásában.