Macro para copiar datos en otra hoja

He utilizado una macro de Elsa Matilde para copiar datos de una hoja a otra, pero me he topado con un problema.

Sub pase()
'x Elsamatilde
'guardamos en variable la primer fila libre de la hoja2
libre = Sheets("DATOS").Range("B65536").End(xlUp).Row + 1
'guardamos en variable la última fila ocupada de hoja1
finfila = ActiveSheet.Range("G65536").End(xlUp).Row
'copiamos rango solo valores
ActiveSheet.Range("G9:O33" & finfila).Copy
Sheets("DATOS").Range("B" & libre).PasteSpecial Paste:=xlValues
'inhabilita el modo Copiar/Pegar
Application.CutCopyMode = False
'opcional borrar aquí mismo o colocar esta línea en otro botón
ActiveSheet.Range("K9:N33" & finfila) = ""
End Sub

La Macro funciona a la perfección, pero el problema es el siguiente: en la hoja donde se cargan los datos (Carga) utilizo el rango G9:O33 donde en las columnas G, H, I, J y O hay formulas, por tanto solo se ingresan datos manuales en las columnas K a la N. Esto no significa que siempre se carguen datos desde la fila 9 a la 33, en ocasiones solo se utiliza una fila o 2. Acá es donde tengo el problema, cuando utilizo la macro para copiar los datos ingresados a la hoja de base de datos siempre me copia el rango G9:O33, y si solo hubiese ingresado una fila de datos cuando vuelvo a ingresar mas, al copiarlos me deja en blanco 24 filas de la hoja de datos a partir del ultimo ingreso y desde ahí copia los nuevos.

1 respuesta

Respuesta
1

La macro del ejemplo busca la última fila ocupada en col G:

finfila = ActiveSheet.Range("G65536").End(xlUp).Row

Pero si en tu caso esa col tiene fórmulas debes utilizar alguna otra, donde vayan datos manuales. Puede ser K o N. La que siempre estará completa.

finfila = ActiveSheet.Range("K65536").End(xlUp).Row 

Sdos y no olvides valorar la respuesta.

Elsa

* Cyber-mes en manuales Excel

Realice el cambio que me sugeriste pero sigue haciendo lo mismo.

En la hoja donde debe pegar los datos deja espacios en blanco.

Del mismo modo en que buscas la última fila con datos para copiar... debes buscar la última con datos (+1) para pegar.

En la línea de ejemplo se está buscando en col B... pero si antes se copió un rango con fórmulas ahora B llega hasta donde se observa.

'guardamos en variable la primer fila libre de la hoja2
libre = Sheets("DATOS").Range("B65536").End(xlUp).Row + 1

¿Por qué no borras primero las líneas con datos demás como para asegurarte?

Sdos!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas