Táboa de contidos
Un dos problemas máis comúns que atopamos ao traballar con copiar e pegar en VBA é o erro de tempo de execución 1004 : Fallo do método de pegar da clase de intervalo . Neste artigo mostrarei cales son as posibles razóns detrás deste erro e como resolvelos, con exemplos e ilustracións axeitados.
Descargar o libro de prácticas
Descarga este caderno de prácticas para facer exercicio mentres lees este artigo.
PasteSpecial Method Failed.xlsm
PasteSpecial Method of Range Class Failed: Causes e Solucións
Sen máis demora, imos ao noso debate principal. É dicir, cales poden ser as posibles razóns detrás deste erro e como resolvelos.
Razón 1: acceder ao método PasteSpecial sen copiar nada
Este é o máis razón común detrás do erro. É dicir, tentando acceder ao método PasteSpecial sen copiar nada.
Para entendelo claramente, comprobe o seguinte código VBA .
⧭ Código VBA:
6911
Aquí usamos o método PasteSpecial de VBA sen copiando calquera cousa. Entón, Excel mostrará un erro de tempo de execución 1004 cando o execute.
⧭ Solución:
Para resolver este problema, primeiro, cómpre copiar un intervalo de celas e despois acceder ao método PasteSpecial .
8201
Cando executas este código, serápega as fórmulas do intervalo B3:B5 da folla de traballo activa no intervalo seleccionado.
Ler máis: Fallo do método PasteSpecial da clase da folla de traballo (motivos e solucións)
Razón 2: acceder ao método PasteSpecial con erros ortográficos
Este é outro motivo común detrás do erro. É dicir, para acceder ao método PasteSpecial con erros ortográficos en calquera argumento.
Mira o seguinte código VBA para que quede claro. Aquí cometemos un erro ortográfico no argumento xlPasteAll .
⧭ Código VBA:
5770
Cando executas este código, obterás o erro de execución 1004 .
⧭ Solución:
A solución é sinxela. Seguro que xa o adiviñaches. Só asegúrese de que a ortografía de todos os argumentos se realizou correctamente.
E o erro desaparecerá automaticamente.
Ler máis: Como usar Pegar Comando especial en Excel (5 formas axeitadas)
Lecturas similares
- Excel VBA: copiar intervalo noutro libro de traballo
- Copiar e pegar valores na seguinte fila baleira con Excel VBA (3 exemplos)
- Aplicar VBA PasteSpecial e manter o formato de orixe en Excel
- Como copiar o mesmo valor en varias celas en Excel (4 métodos)
- Excel VBA para copiar filas noutra folla de traballo en función dos criterios
Razón 3: abrir un novoCaderno de traballo despois de copiar que cancela o modo de copiar/pegar
Esta é outra razón importante detrás do erro. É dicir, facer algo que cancele o modo copiar/pegar antes de pegar.
Mira o seguinte código para entendelo claramente.
⧭ Código VBA:
8331
Aquí copiamos o intervalo B3:B5 da Folla1 dun libro de traballo chamado Caderno de traballo1 .
Entón creamos un novo libro chamado Workbook2 no mesmo cartafol e tentamos pegar o intervalo copiado no intervalo B3:B5 de Folla1 dese libro de traballo.
Pero cando executemos o código, mostrará un Error do método PasteSpecial da clase de intervalo , porque no momento en que creamos o novo libro de traballo, o o modo copiar/pegar cancelarase.
⧭ Solución:
Para resolver este problema, primeiro escriba abaixo as liñas de código para crear o novo libro chamado Workbook2 .
A continuación, insira as liñas para activar Workbook1 e copie o intervalo desexado.
E, finalmente, activa Workbook2 e pega alí o intervalo copiado.
1703
Executar este código. Copiará o intervalo B3:B5 da Folla1 de Caderno de traballo1.
E pegao en Folla1 do libro de traballo recén creado chamado Caderno de traballo2 .
⧭ Precaución:
Obviamente, non esquezas manter Workbook1 aberto mentres executas
Ler máis: Como desactivar copiar e pegar en Excel sen macros (con 2 criterios)
Razón 4: Convertendo Application.CutCopyMode a False que cancela o modo Copiar/Pegar
Finalmente, pode haber outro motivo polo que se produza o erro. Podemos desactivar Application.CutCopyMode por erro antes de acceder ao método PasteSpecial .
Aínda que non é unha práctica moi común, ás veces facémolo cando queremos traballar cun número longo de liñas.
Consulte o seguinte código para entendelo claramente. Aquí copiamos o intervalo B3:B5 , pero cancelamos o CutCopyMode antes de pegalo.
⧭ Código VBA:
5773
Cando execute o código, mostrará o erro PasteSpecial Method of Range Class Failed .
⧭ Solución:
Supoño que agora xa todos adiviñades a solución. En realidade é bastante sinxelo. Só tes que eliminar a liña do código que desactiva o modo CutCopy .
Entón, o código VBA correcto será:
8887
Copiará o intervalo B3:B5 e pegarao sobre D3:D5 sen ningún problema.
Ler máis: VBA Pegar especial para copiar valores e formatos en Excel (9 exemplos)
Cousas para recordar
Aquí mostrei só os problemas que podes atopar ao traballar co método PasteSpecial en VBA. Sequere coñecer o método PasteSpecial en detalle, visite esta ligazón .
Conclusión
En resumo, estes son os motivos que poden causar o erro de tempo de execución 1004: PasteSpecial Method od Range Class Failed no teu código. Espero que entendeses todos os puntos con claridade e que che axuden moito no futuro. Coñeces algún outro motivo? E tes algún problema? Non dubides en preguntarnos. E non esquezas visitar o noso sitio ExcelWIKI para obter máis publicacións e actualizacións.