VBA: Copiar valores de celdas en otra hoja
Resuelto
Max49
-
michel_m Mensajes publicados 18903 Fecha de registro Estado Colaborador Última intervención -
michel_m Mensajes publicados 18903 Fecha de registro Estado Colaborador Última intervención -
Hola,
Estoy comenzando en VBA y estoy intentando
Me gustaría copiar los valores de un rango en otro rango pero en otra hoja. He encontrado varias soluciones para abordar mi problema, primero utilicé este código para hacer mi copiar y pegar:
Worksheets("Hebdo").Activate
Range(Cells(lig1, col), Cells(lig - 1, col + 2)).Select
Range(Cells(lig1, col), Cells(lig - 1, col + 2)).Copy
ActiveWorkbook.Sheets("GR1").Activate
ActiveWorkbook.Sheets("GR1").Range(Cells(5, 1), Cells(14, 3)).Select
ActiveWorkbook.Sheets("GR1").Paste
Este código me funcionaba perfectamente hasta que modifiqué el formato de mi tabla de Excel para imprimir mis tablas automáticamente. Ahora me encuentro copiando valores de celdas de tamaño 22 y pegándolos en celdas que deberían ser del tamaño 11.
Para ello, leí en este foro que es más simple realizar esta acción copiando solo los valores y no la celda completa utilizando la siguiente forma:
Range("A1:C5").value = Range("D6:G11").value
Aplicado a mi problema, esto sería:
Sheets("GR1").Range("A5:C14").Value = Sheets("Hebdo").Range(Cells(lig1, col), Cells(lig - 1, col + 2)).Value
lig y col son dos variables integer que se han definido previamente.
Sin embargo, este código no funciona, me da un mensaje de error.
También leí que hay un método con .PasteSpecial, pero no sé cómo usarlo.
¿Alguien tendría una solución?
Atentamente
Max
Estoy comenzando en VBA y estoy intentando
Me gustaría copiar los valores de un rango en otro rango pero en otra hoja. He encontrado varias soluciones para abordar mi problema, primero utilicé este código para hacer mi copiar y pegar:
Worksheets("Hebdo").Activate
Range(Cells(lig1, col), Cells(lig - 1, col + 2)).Select
Range(Cells(lig1, col), Cells(lig - 1, col + 2)).Copy
ActiveWorkbook.Sheets("GR1").Activate
ActiveWorkbook.Sheets("GR1").Range(Cells(5, 1), Cells(14, 3)).Select
ActiveWorkbook.Sheets("GR1").Paste
Este código me funcionaba perfectamente hasta que modifiqué el formato de mi tabla de Excel para imprimir mis tablas automáticamente. Ahora me encuentro copiando valores de celdas de tamaño 22 y pegándolos en celdas que deberían ser del tamaño 11.
Para ello, leí en este foro que es más simple realizar esta acción copiando solo los valores y no la celda completa utilizando la siguiente forma:
Range("A1:C5").value = Range("D6:G11").value
Aplicado a mi problema, esto sería:
Sheets("GR1").Range("A5:C14").Value = Sheets("Hebdo").Range(Cells(lig1, col), Cells(lig - 1, col + 2)).Value
lig y col son dos variables integer que se han definido previamente.
Sin embargo, este código no funciona, me da un mensaje de error.
También leí que hay un método con .PasteSpecial, pero no sé cómo usarlo.
¿Alguien tendría una solución?
Atentamente
Max
2 respuestas
-
Hola,
aparentemente tus superficies no son idénticas
A5:C14 contiene 2 filas
entonces
Sheets("GR1").Range("A5:C14") = Sheets("Hebdo").Range(Cells(lig, col), Cells(lig +2, col + 2)).Value
o
Range(Cells(lig-1, col), Cells(lig +1, col + 2)).Value
nota
tenías 3 variables Lig1, Lig y col...
no es necesario indicar .value en las celdas objetivo
Michel