Macro para copiar celdas con formato (color) a otra celda

Ya se me indicó en una ocasión la forma de trasladar (copiar) celdas de una hoja a otra con una macro. Ahora quisiera que también se transfiriesen no sólo el valor de las celdas sino también el color.

Os adjunto parte del código de la macro que utilizo como referencia:

libre = Sheets("Savetickets").Range("A15000").End(xlUp).Row + 1
Sheets("Savetickets").Cells(libre, 1) = ActiveSheet.Range("a11")
Sheets("Savetickets").Cells(libre, 2) = ActiveSheet.Range("b11")

1 Respuesta

Respuesta
1

Hay tantas maneras de copiar y pegar datos que el tema mereció ser tomado para 1 de mis guías temáticas.

Como no indicas si las celdas tienen o no fórmulas, te dejo algunas instrucciones de ejemplo que te servirán para adaptarlas.

Sub ejemplos_de_copiado()
'x Elsamatilde
'TODO (formula y formatos)
ActiveCell.Copy Destination:=Sheets("Hoja1").Range("A2")
'solo valor
Sheets("Hoja1").Range("A2") = ActiveCell.Value
'formato y valor,sin fórmulas
ActiveCell.Copy
ActiveCell.Offset(0, 2).Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=False
End Sub

Si todo quedó comprendido y resuelto no olvides valorar y finalizar,

Sdos

Elsa

De momento no me ha funcionado.

Te doy más info: versión excel 2007. Fórmulas en: (c11:c19), (e11:e19) y (g11:g19).

Me pusistes de forma genérica pero si me lo pudieras concretar ya sabiendo esta nueva información estaría muy agradecido.

Bien, parece entonces que en algunos rangos hay formulas (que deben quedar como valores) y además hay formatos. Y según tus instrucciones al inicio de la consulta el rango de copiado empieza en A11.

Si no es así x favor dejame imagen de la hoja de datos o enviamela a mi correo así te desarrollo la macro para tu modelo.

Sub Ejemplo_CopiasinFormulas()
'x Elsamatilde
'fila destino
libre = Sheets("Savetickets").Range("A15000").End(xlUp).Row + 1
'defino 1 variable para la hoja
Set hs = Sheets("Savetickets")
'copia rangos A11:G19 y pega como valores y formatos... sin formulas
'ajustar rango si hiciera falta
Range("A11:G19").Copy
'selecciona 1ra fila de destino
hs.Cells(libre, 1).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
hs.Cells(libre, 1).PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=False
'quita el modo de copiado
Application.CutCopyMode = False
End Sub

Sdos

Elsa

He añadido tu código pero...falla en la siguiente precisión que igual omití y es fundamental. Aunque el contenido de datos posibles a copiar va de "A11" a "G19", al ser un formulario con 10 filas no siempre las 10 están rellenas sino que puede ser 1,2,3,..Debe copiar solo las líneas que estén rellenas.(La macro ha funcionado bien pero me ha escrito las 10 filas no discriminando que habían unas sin rellenar).

En cuanto a la posibilidad de enviarte el archivo desconozco tu e-mail. Si me lo indicas te lo envío.

Se encuentra en mi sitio... igual te lo dejo aquí:

cibersoft_arg ARROBA yahoo.com.ar

PD) que el libro contenga la macro que te pase aqui.

Sdos!

Estimada Elsa:

Probé el libro con la macro que me escribiste y si funciona pero el tema del color sigue sin funcionar. Copia los contenidos de las celdas pero no el color de las mismas.

¿Qué color necesitas? Se está respetando los colores de la hoja SaveTickets que sería lo correcto.

No revisé la rutina del botón Colorear porque entiendo que estamos tratando la copia ... pero confirma si necesitas que la copia mantenga los colores de la hoja Ticket o no.

Sdos!

¡Gracias! Elsa tu macro no copiaba el formato por una nimiedad que se te pasó por alto y es que una de las instrucciones que añadistes al código iba precedido de un apóstrofo por lo que la macro no la interpretaba como instrucción sino como comentario. Revísalo y lo verás:

'hs.Cells(libre, 1).PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False

Quitamos el símbolo (') y ya funciona correctamente.

Reitero mi gratitud por todo el interés que has mostrado

No se me pasó por alto. Esa instrucción la coloqué en mi primera respuesta porque interpreté que necesitabas el formato de origen... pero luego viendo tu hoja se me hizo que debía respetar el formato de destino... por eso la inhabilité.

Me alegro que ya lo tengas como te gusta.

Sdos!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas