Macro para copiar el formato de una hoja a otra

Ante todo, agradecer a Dante Amor la última ayuda prestada. La macro que me pasaste me ha ayudado mucho para ahorrarme tiempo en la gestión. Muchas gracias.

En el Excel de la última consulta, me gustaría añadir a la macro una "función" que, cuando en la hoja PROGRAMACIÓN una empresa está marcada en rojo (la letra, no el fondo), cuando ejecutase la macro, en la hoja FACTURACIÓN también saliera en rojo. Lo he intentado con un par de ejemplos que he encontrado en foros, pero creo que no lo estoy poniendo en el sitio correcto.

1 Respuesta

Respuesta
1

Te anexo las macros con los cambios

Sub Resumen()
'Por.Dante Amor
    Set h1 = Sheets("PROGRAMACIÓN")
    Set h2 = Sheets("FACTURACIÓN")
    uf = h1.Range("A" & Rows.Count).End(xlUp).Row
    uc = h1.Cells(1, Columns.Count).End(xlToLeft).Column
    u2 = h2.Range("A" & Rows.Count).End(xlUp).Row
    If u2 = 1 Then u2 = 2
    h2.Range("A2:E" & u2).Clear
    '
    For Each c In h1.Range(h1.Cells(2, "D"), h1.Cells(uf, uc)).SpecialCells(xlCellTypeConstants, 23)
        Select Case Left(c.Value, 5)
            Case "FESTI", "VACAC", "CURSO", "REUNI", "DIAS P"
            Case Else
                If c.MergeCells Then
                    valor = c.Value
                    If c.Value <> "" Then
                        i = c.MergeArea.Cells(1, 1).Row
                        f = c.MergeArea.Rows.Count + i - 1
                        n = c.MergeArea.Rows.Count
                        llenar h1, h2, c.Value, i, f, n, c.Column, c.Font.ColorIndex
                    End If
                Else
                    llenar h1, h2, c.Value, c.Row, c.Row, 1, c.Column, c.Font.ColorIndex
                End If
        End Select
    Next
    h2.Select
    MsgBox "Facturación terminada", vbInformation
End Sub
Sub llenar(h1, h2, c, i, f, n, col, icolor)
'Por.Dante Amor
    u = h2.Range("A" & Rows.Count).End(xlUp).Row + 1
    h2.Cells(u, "A") = c
    h2.Cells(u, "B") = h1.Cells(i, "A")
    h2.Cells(u, "C") = h1.Cells(f, "A")
    h2.Cells(u, "D") = n
    h2.Cells(u, "E") = h1.Cells(1, col)
    If icolor = 3 Then
        h2.Cells(u, "A").Font.ColorIndex = 3
    End If
End Sub

Saludos.Dante Amor

¡Muchas Gracias! 

Solo un par de detalles, en la hoja FACTURACIÓN las fechas ahora salen en formato general, cuando anteriormente salían en formato fecha.

También he pensado que, a parte del formato del texto, también se podría trasladar el color de la celda.

Sólo un detalle Dante Amor, en la hoja FACTURACIÓN, ahora las fechas columnas B y C salen en formato general, cuando anteriormente salían en formato fecha. No se qué cambio en la macro ha podido generar esto.

También he pensado en que, a parte del formato del texto, también estaría bien que se copiase el color de la celda. Es posible?

La macro no pone el formato de la columna, simplemente, antes de ejecutar la macro, cambia el formato de las columnas a fecha.

Hola Dante,

En la novena fila, donde pone h2.Range(A2:E" & u2).Clear, anteriormente en vez de "Clear" ponía "ClearContents". Creo que esto es lo que hace que se elimine el formato de las celdas. Es así?

Tienes razón, cambia clear por cliarcontents

Prueba y me comentas

Ya veo que pasa, quizás no hice la pregunta correcta en su momento.

Con "ClearContents" elimina el contenido pero no el formato y me parece bien. La macro busca el texto en rojo y lo pasa a la hoja FACTURACIÓN. Pero lo que pasa es que cuando en la hoja PROGRAMACIÓN cambio el formato del texto, en FACTURACIÓN no cambia. O sea, que cuando cambio una empresa de rojo a negro en PROGRAMACIÓN, sigue apareciendo en rojo en FACTURACIÓN.

Me explico de nuevo. El tema del color del texto y, ya puestos, el del fondo para cada empresa de la hoja PROGRAMACIÓN tiene una función. El color del texto me indica si la inspección a esta empresa está confirmada (negro) o por confirmar (rojo) (pudiendo ser estos cualquier color) y los colores del fondo me indican qué tipo de inspección es (por ejemplo: AMARILLO=Cerveza, ROSA=Vino, MARRÓN=refrescos, etc). Por lo tanto, lo que pretendía es que el formato de las celdas de PROGRAMACIÓN se me conservasen en FACTURACIÓN sean los que sean.

Como lo ves?

Disculpa, ya me acordé por qué lo pasé de clearcontents a clear, en mis pruebas me di cuenta de ese detalle, por eso lo cambié a clear, con eso limpio los colores.

Cambia esta:

H2.Range("A2:E" & u2). Clear

Por estas

H2.Range("A2:E" & u2). ClearContents
h2.Range("A2:E" & u2).Font.ColorIndex = xlNone

Prueba y me comentas, antes cambia las columnas a formato fecha

Para la parte de pasar el color de la celda, podrías crear una nueva pregunta en el tema de excel.

Si lo deseas, al final del título de la nueva pregunta puedes poner que va dirigida a Dante Amor.

Preparo la macro con los cambios y te la envío en la nueva pregunta.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas