Guardar data a otra hoja mediante Command Button

Hola Elsa.
Puse en practica tu código para trasladar valores de una celda de una hoja a otra mediante un Command Button, ahora mi pregunta es la siguiente: Tengo una Orden de Compra hecha en excel, que contiene No de Orden, Fecha de Compra, términos de compra, etc como parte del encabezado, ahora en el cuerpo de la oden tengo Item, Descripción, Cantidad, Precio Unitario y Total, pues en esas filas voy ingresando datos, ahora la pregunta es la siguiente: Como hacer para que las filas siguientes me graben a la otra hoja en excel o una forma de incrementar automáticamente las celdas mediante la variable filalibre
Private Sub salvar_Click()
filalibre = Sheets("DATA").Range("A65536").End(xlUp).Row + 1
Linea1
Range("A16").Select
Do While ActiveCell <> Empty
ActiveCell.Offset(1, 0).Select
Sheets("DATA").Cells(filalibre, 1) = ActiveSheet.Range("H4")
Sheets("DATA").Cells(filalibre, 2) = ActiveSheet.Range("H5")
Sheets("DATA").Cells(filalibre, 3) = ActiveSheet.Range("H7")
Sheets("DATA").Cells(filalibre, 4) = ActiveSheet.Range("H8")
Sheets("DATA").Cells(filalibre, 5) = ActiveSheet.Range("A11")
Sheets("DATA").Cells(filalibre, 6) = ActiveSheet.Range("A16")
Sheets("DATA").Cells(filalibre, 7) = ActiveSheet.Range("B16") --> que pase a B17,B18...
Sheets("DATA").Cells(filalibre, 8) = ActiveSheet.Range("D16")
Sheets("DATA").Cells(filalibre, 9) = ActiveSheet.Range("E16")
Sheets("DATA").Cells(filalibre, 10) = ActiveSheet.Range("F16")
Sheets("DATA").Cells(filalibre, 11) = ActiveSheet.Range("H16")
filalibre = filalibre + 1
Loop
End Sub
Saludos desde Honduras y gracias por compartir tu conocimiento
Atentamente. Lessner

1 Respuesta

Respuesta
1
La idea es que primero pases todos los datos fijos (encabezados) y luego coloques los dtos de cada registro o item a partir de la celda activa (col A) y moviéndote con Offset hasta la col H.
Entonces sería algo así:
Private Sub salvar_Click()
filalibre = Sheets("DATA").Range("A65536").End(xlUp).Row + 1
Range("A16").Select
Do While ActiveCell <> Empty
'encabezados
Sheets("DATA").Cells(filalibre, 1) = ActiveSheet.Range("H4")
Sheets("DATA").Cells(filalibre, 2) = ActiveSheet.Range("H5")
Sheets("DATA").Cells(filalibre, 3) = ActiveSheet.Range("H7")
Sheets("DATA").Cells(filalibre, 4) = ActiveSheet.Range("H8")
Sheets("DATA").Cells(filalibre, 5) = ActiveSheet.Range("A11")
'recorrer lista de items
Sheets("DATA").Cells(filalibre, 6) = ActiveSheet.Activecell   'col A
Sheets("DATA").Cells(filalibre, 7) = ActiveSheet.activecell.offset(0,1)  'col B
Sheets("DATA").Cells(filalibre, 8) = ActiveSheet.activecell.offset(0,3)  'col D
Sheets("DATA").Cells(filalibre, 9) = ActiveSheet.activecell.offset(0,4)  'col E
Sheets("DATA").Cells(filalibre, 10) = ActiveSheet.activecell.offset(0,5)  'col F
Sheets("DATA").Cells(filalibre, 11) = ActiveSheet.activecell.offset(0,7)  'col H
activecell.offset(1,0).select  'pasa al item siguiente
filalibre = filalibre + 1
Loop
End Sub
Elsa muchas gracias por tomarte tu tiempo en responder, fiajate que hice tu sugerencia en cuanto al código se refiere, pero al ejecutar me da un error al aplicar (activesheet. Activecell) el mensaje que sale es: "el objeto no soporta esta propiedad o método" 'runtime error 438', no se si es problema en las propiedades del Botón o sintaxis.
Gracias por todo
Atentamente. Lessner...
Lo dejé porque así estaba, pero sacale el activesheet y pruébalo nuevamente. Asegurate de estar en la hoja Orden de compra cuando lo ejecutes.
Muchas gracias Elsa, lo deje de la siguiente forma:
' Graba Detalles
Sheets("DATA").Cells(filalibre, 6) = ActiveCell.Offset
Sheets("DATA").Cells(filalibre, 7) = ActiveCell.Offset(0, 1)
Sheets("DATA").Cells(filalibre, 8) = ActiveCell.Offset(0, 3)
Sheets("DATA").Cells(filalibre, 9) = ActiveCell.Offset(0, 4)
Sheets("DATA").Cells(filalibre, 10) = ActiveCell.Offset(0, 5)
Sheets("DATA").Cells(filalibre, 11) = ActiveCell.Offset(0, 7)
Te agradezco por tu ayuda, me orientastes en gran manera.
Saludos.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas