Macro copiar formato

Querría saber si me podéis ayudar en la siguiente cuestión. Tengo el excel 2007, y querría saber si se podría hacer una macro donde se copiara el formato de una hoja y se aplicara en la otra, es decir sería lo mismo como si lo haces con el pincel pero que el cambio de formato se hiciera automáticamente al cambiarlo en una hoja y aplicado en toda la hoja, no solo en una celda. En caso de que se pudiera, me podrías escribir la programación, por favor, es que este tema no lo domino mucho.

1 respuesta

Respuesta
1
Si lo que quieres es una copia exacta de una hoja solo has de pinchar en la esquina de lahoja encima de 1 a la derecha de A escoger copiar y situarte en A1 de la hoja que quieres y pegar
si solo quieres los formatos escoges pegado especial y seleccionas solo formatos
si sabes usar la grabadora de macros la pones en marcha y realizas esos pasos y ya tienes el código
que seria esto para la gemela
Sub Copiar()
    Cells.Select
    Selection.Copy
    Sheets("Hoja2").Select
    Range("A1").Select
    ActiveSheet.Paste
    Application.CutCopyMode = False
    Range("A1").Select
End Sub
Y si solo quieres los formatos seria esta
Sub Copiar_Formato()
    Cells.Select
    Sheets("Hoja2").Select
    Range("A1").Select
    Sheets("Hoja1").Select
    Selection.Copy
    Sheets("Hoja2").Select
    Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=False
    Range("A1").Select
End Sub
Ya me cuentas si era eso lo que necesitabas
Saludos,
Primero de todo quiero agradecerte la velocidad de respuesta. Creo que sí que es lo que me hasa puesto, pero tengo unas dudas a ver si me puede aclarar.
1. Al ejecutar la macro, en un principio parece que me la hace pero vuelve a su estado original y me pone selecciona destino o pulse pegar, lo hago pero no me sale. ¿QUé hago mal?
2. Yo no entiendo mucho de macros, pero he grabado una macro y he insertado un modulo con la programación que me has dado en microsoft viasual basic. Es ese el paso correcto, verdad ¿?
3.-LA macro que me has prpopuesto haría el cambio directo, es decir al cambiar el formato de la hoja de referencia me la cambia directamente a su gemela, o tengo que hacer ejeceutar macro ¿?
(Las macros ya están habilitadas)
Espero no agobiarte mucho.
Enorme gracias por tu colaboración
Saludos
Te explico si insertas un modulo y en el pegas este código
Sub Copiar()
    Cells.Select
    Selection.Copy
    Sheets("Hoja2").Select
    Range("A1").Select
    ActiveSheet.Paste
    Application.CutCopyMode = False
    Range("A1").Select
End Sub
Tienes que ejecutarla para que lo realize
Eso si este código te copia la hoja activa osea la hoja en la que estas cuando ejecutas la macro y te lo copia en la hoja2 si la ejecutas en la hoja2 te quedara todo como esta
Si lo que quieres es que es ejecute sola debería ser cuando cambies algún dato en la hoja con el evento change explícame un poco mejor lo que quieres exactamente y te esplicaria como
De nuevo gracias
Lo que quiero es que cuando cambie el relleno de una celda en la hoja 1, me haga el mismo cambio en la hoja 2 pero a poder ser automático como hablamos.
Por ejemplo:
Si decido cambiar el relleno en la celda a3 de la hoja 1, pues que al hacerlo automáticamente me cabie el relleno de la celda a3 en la hoja 2.
(Lo querría así puesto que el color de esas celdas me determina los elementos a sumar.
Muchas Gracias
Vale mañana te paso el código
Ok espero tu respuesta
Gracias
Tienes esta solución
En el código de la hoja1 pega este código
Private Sub Worksheet_Change(ByVal Target As Range)
Application.ScreenUpdating = False
Macro1
Application.ScreenUpdating = True
End Sub
Luego insertas un modulo y pegas este otro codigo
Sub Macro1()
Dim strnombrehoja$, strrangocelda$
strnombrehoja$ = ActiveSheet.Name
strrangocelda$ = ActiveCell.Address
Cells.Select
    Selection.Copy
    Sheets("Hoja2").Select
    Range("A1").Select
    ActiveSheet.Paste
    Application.CutCopyMode = False
    Range("A1").Select
    Sheets("Hoja1").Select
   Sheets(strnombrehoja$).Select
Range(strrangocelda$).Select
End Sub
Con esto cada vez que cambies un dato en la hoja 1 te copia toda la hoja en la hoja2
eso si, si cambias color tamaño de celda etc. no lo realizara mientras no pulses enter en alguna casilla que cambies datos
Queda la posibilidad de que en vez de ser cuando cambies un dato que sea cuando se calcule una fórmula o bien cuando hagas doble cilck en cualquier celda.
Si quieres alguna de estas opciones solo has de poner este codigo en la hoja
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Application.ScreenUpdating = False
Macro1
Application.ScreenUpdating = True
End Sub
ó para formula
Private Sub Worksheet_Calculate()
Application.ScreenUpdating = False
Macro1
Application.ScreenUpdating = True
End Sub
Si necesitas alguna aclaración dímelo
Hola d2enri,
Perfecto me decantaré final por el doble click, pero sólo una pregunta. Yo sólo quiero que me cambie el formato, lo datos no, puesto que una tabla recoge importes con iVA y la otra no. ¿Me podría ayudar por favor?
Muchas Gracias
En ese caso solo has de cambiar la linea
ActiveSheet. Paste
Por esta
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=False

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas