Tartalomjegyzék
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.xlsmA 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.