Macro grabe 23 datos de una hoja a otra pero que los nuevos estén al inicio de la hoja de Excel .

Tengo un inventario en el cual se guardan diario 23 datos, lo que deseo es que estos datos nuevos se guarden uno sobre otro, es decir los 23 de hoy se guarden debajo de los 23 de mañana y así sucesivamente, a continuación la macro que tengo.

Sub GRABAR()

Application.ScreenUpdating = False

libre = Sheets("Registro").Range("A65536").End(xlUp).Row + 1

Application.ScreenUpdating = False

Sheets("Registro").Select
Range("B5").EntireRow.Insert
Sheets("Bebidas").Select

'FECHA

Range("K5").Copy
Sheets("Registro").Select
Range("B5").PasteSpecial xlPasteValues
Sheets("Bebidas").Select

'PRODUCTO

Range("B6").Copy
Sheets("Registro").Select
Range("C5").PasteSpecial xlPasteValues
Sheets("Bebidas").Select

'NEVERA INICIO

Range("C6").Copy
Sheets("Registro").Select
Range("D5").PasteSpecial xlPasteValues
Sheets("Bebidas").Select

'BODEGA INICIO

Range("D6").Copy
Sheets("Registro").Select
Range("E5").PasteSpecial xlPasteValues
Sheets("Bebidas").Select

'BODEGA FINAL

Range("E6").Copy
Sheets("Registro").Select
Range("F5").PasteSpecial xlPasteValues
Sheets("Bebidas").Select

'NEVERA FINAL

Range("F6").Copy
Sheets("Registro").Select
Range("G5").PasteSpecial xlPasteValues
Sheets("Bebidas").Select

'VENTA

Range("M6").Copy
Sheets("Registro").Select
Range("J5").PasteSpecial xlPasteValues
Sheets("Bebidas").Select

'COCINA

Range("N6").Copy
Sheets("Registro").Select
Range("K5").PasteSpecial xlPasteValues
Sheets("Bebidas").Select

'CONSUMO INTERNO

Range("O6").Copy
Sheets("Registro").Select
Range("L5").PasteSpecial xlPasteValues
Sheets("Bebidas").Select

'TOTAL BODEGA

Range("H6").Copy
Sheets("Registro").Select
Range("H5").PasteSpecial xlPasteValues
Sheets("Bebidas").Select

'TOTAL NEVERA

Range("G6").Copy
Sheets("Registro").Select
Range("I5").PasteSpecial xlPasteValues
Sheets("Bebidas").Select

'OBSERVACIONES

Range("P6").Copy
Sheets("Registro").Select
Range("M5").PasteSpecial xlPasteValues
Sheets("Bebidas").Select

Application.ScreenUpdating = True

End Sub

En este ejemplo solo coloque un dato de cada enunciado, pero en si son 23 de cada uno.

Respuesta
1

Ya tenés la instrucción que te encuentra la primer fila libre, hacia abajo. En video 30 de mi canal explico el método CurrentRegion que es otra manera de encontrar esa fila.

Luego tenés que enviar cada dato a esa fila tal como te dejo para FECHA y PRODUCTO.

Sub GRABAR()
Application.ScreenUpdating = False
'aquí se obtiene la primer fila libre
libre = Sheets("Registro").Range("A65536").End(xlUp).Row + 1
    'Application.ScreenUpdating = False   está repetida
    'Sheets("Registro").Select
    'Range("B5").EntireRow.Insert    'no insertar
Sheets("Bebidas").Select
'FECHA
Range("K5").Copy
Sheets("Registro").Select
Range("B" & libre).PasteSpecial xlPasteValues
Sheets("Bebidas").Select
'PRODUCTO
Range("B6").Copy
Sheets("Registro").Select
Range("C" & libre). PasteSpecial xlPasteValues
Sheets("Bebidas").Select

Solo te queda completar la macro. Si hay que seguir en otras filas, tendrás que incrementar la variable con: libre = libre+1 

Sdos y no olvides valorar la respuesta si el tema queda resuelto, o comenta enviando mayores aclaraciones.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas