Jump to content

Copiar y pegar datos de una hoja a otra en la primera fila libre (error 1004, el área de copiar y pegar no tienen el mismo tamaño)


Recommended Posts

Hola,

Estoy con algo muy básico, nunca he tenido problemas... pero me ha saltado de repente un error por primera vez donde no consigo encontrar qué sucede.

Estoy intentado copiar los datos de la hoja TBIS en la primera fila libre de la hoja T.  Es algo que hago a menudo, pero me he encontrado con un problema que nunca había visto. Error 1004. el área de copiado y pegado no tienen el mismo tamaño. Tienen el mismo número de columnas... y las cabeceras son iguales. He probado a limpiar todas las celdas vacías de cada hoja, por si ahí estuviera el problema pero no consigo verlo.

Os adjunto un ejemplo.

Gracias de antemano. 

ejemplo_copypaste.xlsm

Link to comment
Share on other sites

Hola @Maria_80

Acorde a tu código: 

Range(Range("A2"), Range("A2").End(xlDown)).Select
Range(Selection, Selection.Offset(, 44)).Select ' para que abarque 45 columnas (siempre es una menos)
Selection.Copy

Estas copiando todas filas de la hoja Sheets("TBIS"), cuando tratas de pegar en la primera fila sin datos de la otra hoja, por eso te marca error.

Nos comentas.

Link to comment
Share on other sites

3 minutes ago, Mauricio_ODN said:

Hola @Maria_80

Acorde a tu código: 

Range(Range("A2"), Range("A2").End(xlDown)).Select
Range(Selection, Selection.Offset(, 44)).Select ' para que abarque 45 columnas (siempre es una menos)
Selection.Copy

Estas copiando todas filas de la hoja Sheets("TBIS"), cuando tratas de pegar en la primera fila sin datos de la otra hoja, por eso te marca error.

Nos comentas.

Hola, Mauricio. 

Intento copiar todas las filas donde hay datos en TBIS, nunca me había dado problemas. En este caso solo existe una fila, pero a veces hay más. Depende del día... no consigo solucionarlo. Es cierto que me selecciona toda la hoja pero nunca me había dado problemas. 

Link to comment
Share on other sites

Hola de nuevo @Maria_80

Creo que no has revisado particularmente lo que hace tu código, cuando solo tienes un registro a copiar, te va a copiar todas las filas de tu hoja (1,048,576).

Caso contrario cuando tienes dos o mas registros, intenta agregar otro registro y hacer una prueba.

Nos comentas. Saludos.

 

Link to comment
Share on other sites

Just now, Mauricio_ODN said:

Hola de nuevo @Maria_80

Creo que no has revisado particularmente lo que hace tu código, cuando solo tienes un registro a copiar, te va a copiar todas las filas de tu hoja (1,048,576).

Caso contrario cuando tienes dos o mas registros, intenta agregar otro registro y hacer una prueba.

Nos comentas. Saludos.

 

Hola, Mauricio. Puede darse el caso de que exista solo una fila o de que existan muchos más a copiar dependiendo del día en el que lance la macro. Este es el primer caso que me encuentro donde solo existe un registro. Sigo aprendiendo esto de VBA pero quiero creer que ante este caso no tengo que añadir una excepción y existe otra solución. Pregunto aquí para pediros consejo y también para aprender. Sigo sin solucionarlo. Añadir una segunda fila no es la solución. 

Link to comment
Share on other sites

Hola de nuevo @Maria_80

Estaba tratando de orientarte, para que de alguna forma, entendieras que hace tu código para que tu misma pudieras solucionarlo. Lamento si esto te incomodo o molesto.

No estaba dando una solución en especifico, solo trataba que aprendieras. Me disculpo por el inconveniente.

Te dejo una posible solución.

ejemplo_copypaste 1.1.xlsm

Link to comment
Share on other sites

5 minutes ago, Mauricio_ODN said:

Hola de nuevo @Maria_80

Estaba tratando de orientarte, para que de alguna forma, entendieras que hace tu código para que tu misma pudieras solucionarlo. Lamento si esto te incomodo o molesto.

No estaba dando una solución en especifico, solo trataba que aprendieras. Me disculpo por el inconveniente.

Te dejo una posible solución.

ejemplo_copypaste 1.1.xlsm 18.52 kB · 1 download

Gracias, Mauricio. Funciona perfecto. He probado con un registro, con varios, dejando la hoja T en blanco... va genial. ¿debería sustituir el anterior código por esto a partir de ahora en mis macros? Esto es más efectivo que lo anterior y si se da el caso de un registro no va a haber problemas.

 

 Sheets("TBIS").Activate
 
 uf = Cells(1, 1).SpecialCells(xlCellTypeLastCell).Row
 of = Sheets("T").Cells(Rows.Count, 1).End(xlUp).Row + 1
 
       Range(Cells(2, 1), Cells(uf, 45)).Copy _
        Destination:=Sheets("T").Cells(of, 1)

Link to comment
Share on other sites

Prueba esto, a ver si te gusta más.

Sub Copiar()
Sheets("TBIS").Range("A2:AS" & Sheets("TBIS").Range("A" & Rows.Count).End(xlUp).Row).Copy _
Sheets("T").Range("A" & Sheets("T").Range("A" & Rows.Count).End(xlUp).Row + 1)
End Sub

 

Link to comment
Share on other sites

4 minutes ago, Antoni said:

Prueba esto, a ver si te gusta más.

Sub Copiar()
Sheets("TBIS").Range("A2:AS" & Sheets("TBIS").Range("A" & Rows.Count).End(xlUp).Row).Copy _
Sheets("T").Range("A" & Sheets("T").Range("A" & Rows.Count).End(xlUp).Row + 1)
End Sub

 

Como siempre, mil gracias. Antoni! 

Link to comment
Share on other sites

Y si solo quieres valores:

Sub Copiar()
Sheets("TBIS").Range("A2:AS" & Sheets("TBIS").Range("A" & Rows.Count).End(xlUp).Row).Copy
Sheets("T").Range("A" & Sheets("T").Range("A" & Rows.Count).End(xlUp).Row + 1).PasteSpecial xlValues
End Sub

 

Link to comment
Share on other sites

  • Crear macros Excel

  • Posts

    • La parte de intercalar no la había captado Adjunto de nuevo mi método Espero ahora si, quede listo   Saludos! Mover filas filtradas otra hoja_GP.xlsm
    • Buenas noches nuevamente a los Foristas. A sugerencia de JSD  de los problemas que le planteaba sobre el formulario, abro un nuevo tema. Ofrezco disculpas porque realmente es así como debe ser. El tema es el siguiente: Tengo en este formulario otros problemas que quizás puedan ayudarme: realmente he tratado de ver dónde está el error, pero mis conocimientos no alcanzan y ustedes son los MAESTROS. 1.- En el FrmPersonal trabajo lo que es el listado de Personal con todos los datos y las Nóminas de Salario. En la parte de las nóminas (LstNomina) ya lo configuré de tal manera que con el evento DobleClick pueda traer cualquier trabajador y poder modificar algún dato que por error se haya introducido. Este trabaja Bien, pero en el LstPersonal, estoy tratando de hacer lo mismo y no me está queriendo tomar los datos para su modificación. No me da error, pero no lo hace y he buscado, pero no encuentro el posible problema. 2.- En este mismo Formulario (FrmPersonal), no acabo de poner bien el código VBA para los OptionButton de Sexo. 3.- En este Proyecto también tengo o quiero en el FrmBuscarEntradas poder modificarlo y que a través de un ComboBox o de Botones de Opción poder hacer la búsqueda no sólo de las Entradas, sino también de las Salidas y la Existencia. Esto para evitarme tener que hacer uno para cada uno y reducir los Formularios. ¿Podrías ayudarme con estos temas? Un abrazo a todos. Espero puedas ayudarme y excelente semana para todos. Un abrazo caluroso y cordial. Pino.   Mi Negocio Foro.xlsm
    • Buenas Noches a todos los Foristas. Gracias JSD por su aporte. Revisaré dónde estaba el problema para evitar el mismo error en lo adelante y aprender. Gracias a los demás miembros del Foro también. Tema cerrado.
    • Hola, Gerson. Pues es que solo se mueven todas las salidas de golpe tanto si filtras a mano como si no y todos las referencias de producto a la vez de salidas. No es el ejemplo 2.. no sé... pensaba que la pregunta era clara y tendría fácil solución. El código de mi ejemplo es super sencillo y lo he explicado paso a paso en la macro. En el ejemplo 1 funciona y en el ejemplo 2 es exactamente igual solo que los registros están filtrados.  Comienzo siempre con una salida y luego se van alternando (una entrada, una salida... hay condiciones) hasta que ya no quedan datos en las hojas. Primero para Referencia 1 (filtrada). La idea es al terminar quitar el filtro y hacer lo mismo para referencia 2 (como en el ejemplo 1 que funciona). Gracias.  
  • Recently Browsing

    • No registered users viewing this page.
×
×
  • Create New...

Important Information

Privacy Policy