Taula de continguts
Un dels problemes més habituals que ens trobem mentre treballem amb copiar i enganxar a VBA és l' error de temps d'execució 1004 : Mètode especial de la classe d'interval ha fallat . En aquest article, us mostraré quines són les possibles raons darrere d'aquest error i com resoldre'ls, amb exemples i il·lustracions adequats.
Descarregueu el quadern de pràctiques
Baixeu aquest quadern de pràctiques per fer exercici mentre llegiu aquest article.
PasteSpecial Method Failed.xlsm
PasteSpecial Method of Range Class Error: causes i solucions
Sense més demora, anem a la nostra discussió principal. És a dir, quines poden ser les possibles raons darrere d'aquest error i com resoldre'ls.
Raó 1: accedir al mètode PasteSpecial sense copiar res
Aquest és el més raó comuna darrere de l'error. És a dir, intentar accedir al mètode PasteSpecial sense copiar res.
Per entendre-ho clarament, comproveu el codi VBA següent.
⧭ Codi VBA:
5873
Aquí hem utilitzat el mètode PasteSpecial de VBA sense copiant qualsevol cosa. Així, Excel mostrarà un error en temps d'execució 1004 quan l'executeu.
⧭ Solució:
Per resoldre aquest problema, primer, heu de copiar un rang de cel·les i després accedir al mètode PasteSpecial .
3961
Quan executeu aquest codi, ho faràenganxeu les fórmules de l'interval B3:B5 del full de treball actiu a l'interval seleccionat.
Llegir més: El mètode PasteSpecial de la classe del full de treball ha fallat (motius i solucions)
Raó 2: s'accedeix al mètode PasteSpecial amb errors ortogràfics
Aquesta és una altra raó comú darrere del error. És a dir, per accedir al mètode PasteSpecial amb errors ortogràfics en qualsevol argument.
Mireu el codi VBA següent per deixar-ho clar. Aquí hem comès un error ortogràfic a l'argument xlPasteAll .
⧭ Codi VBA:
6976
Quan executeu aquest codi, obtindreu l' error d'execució 1004 .
⧭ Solució:
La solució és fàcil. Segur que ja ho has endevinat. Només heu d'assegurar-vos que l'ortografia de tots els arguments s'hagi fet correctament.
I l'error desapareixerà automàticament.
Llegiu més: Com s'utilitza Enganxa Comandament especial a Excel (5 maneres adequades)
Lectures similars
- Excel VBA: Copia l'interval a un altre llibre de treball
- Copieu i enganxeu valors a la següent fila buida amb Excel VBA (3 exemples)
- Aplica VBA PasteSpecial i mantén el format d'origen a Excel
- Com copiar el mateix valor en diverses cel·les a Excel (4 mètodes)
- Excel VBA per copiar files a un altre full de treball basat en criteris
Raó 3: obrir un nouLlibre de treball després de copiar que cancel·la el mode de copiar/enganxar
Aquest és un altre motiu important de l'error. És a dir, fer alguna cosa que cancel·li el mode de copiar/enganxar abans d'enganxar.
Mireu el codi següent per entendre's clarament.
⧭ Codi VBA:
5063
Aquí hem copiat l'interval B3:B5 del Full1 d'un llibre de treball anomenat Workbook1 .
A continuació, hem creat un nou quadern de treball anomenat Workbook2 a la mateixa carpeta i hem intentat enganxar l'interval copiat a l'interval B3:B5 de Full1 d'aquest llibre de treball.
Però quan executem el codi, mostrarà un error PasteSpecial Method of Range Class Failed , perquè en el moment en què creem el nou llibre de treball, el mode copiar/enganxar es cancel·larà.
⧭ Solució:
Per resoldre aquest problema, primer, escriviu baixa les línies de codi per crear el nou llibre de treball anomenat Workbook2 .
A continuació, inseriu les línies per activar Workbook1 i copieu-ne l'interval desitjat.
I, finalment, activeu Workbook2 i enganxeu-hi l'interval copiat.
7658
Executeu aquest codi. Copiarà l'interval B3:B5 del Full1 de Workbook1.
I l'enganxarà al Full1 del llibre de treball acabat de crear anomenat Llibret de treball2 .
⧭ Precaució:
Òbviament, no oblideu mantenir Workbook1 obert mentre executeu elcodi.
Llegir més: Com desactivar la funció de copiar i enganxar a Excel sense macros (amb 2 criteris)
Raó 4: Convertir Application.CutCopyMode a False que cancel·la el mode Copiar/Enganxar
Finalment, pot haver-hi un altre motiu pel qual es produeixi l'error. És possible que desactivem Application.CutCopyMode per error abans d'accedir al mètode PasteSpecial .
Tot i que no és una pràctica molt habitual, de vegades ho fem quan ho volem treballeu amb un nombre llarg de línies.
Consulteu el codi següent per entendre-ho clarament. Aquí hem copiat l'interval B3:B5 , però hem cancel·lat el CutCopyMode abans d'enganxar-lo.
⧭ Codi VBA:
8911
Quan executeu el codi, mostrarà l'error PasteSpecial Method of Range Class Failed .
⧭ Solució:
Suposo que a hores d'ara tots ja heu endevinat la solució. És bastant senzill en realitat. Només cal que elimineu la línia del codi que desactiva el mode CutCopy .
Per tant, el codi VBA correcte serà:
1253
Copiarà l'interval B3:B5 i l'enganxarà a D3:D5 sense cap problema.
Llegir més: VBA Paste Special per copiar valors i formats a Excel (9 exemples)
Coses per recordar
Aquí només he mostrat els problemes que podeu trobar mentre treballeu amb el mètode PasteSpecial a VBA. SiSi voleu conèixer el mètode PasteSpecial en detall, visiteu aquest enllaç .
Conclusió
En resum, aquests són els motius que poden provocar l' error en temps d'execució 1004: PasteSpecial Method od Range Class Failed al vostre codi. Espero que hàgiu entès tots els punts clarament i que us ajudin molt en el futur. Coneixes altres motius? I tens algun problema? No dubteu a preguntar-nos. I no us oblideu de visitar el nostre lloc ExcelWIKI per obtenir més publicacions i actualitzacions.