Saltar al contenido

Recommended Posts

publicado

Hola buenas tardes.

Tengo una plantilla en la que doy formato de texto a mis celdas en base a condiciones dentro de la columna A con una macro.

ejemplo si en A20 tengo "SI" la celda G20 se pone en azul y negrita y así diferentes condicionantes.

Pero al ser mi plantilla este se reutiliza.

en ocasiones estas celdas ya tienen un formato previo, necesito que antes de ejecutar un nuevo formato me limpie o borre  el formato y dar el nuevo. y así con las celdas que aplican a las condiciones puestas.Cambio de formatos.xlsm

Muchas gracias

Mariano

publicado

Te dejo dos opciones  primera: 

Cambia tu macro por esta modificas las celdas de la columna a y ejecutas la macro

Sub Poneformat()
    Application.ScreenUpdating = False
    With Sheets("Plantilla")
        For i = 17 To .Range("A" & Rows.Count).End(xlUp).Row
            .Cells(i, "G").ClearFormats
            
            Select Case .Cells(i, "A")
                Case "SI"
                    .Cells(i, "G").Font.Color = RGB(1, 70, 99)
                    .Cells(i, "G").Font.Bold = True 'negrita
                    .Cells(i, "O").Font.Color = RGB(100, 110, 0)
                    .Cells(i, "F") = "-"
                    
                Case "I"
                    .Cells(i, "G").Font.Color = RGB(1, 701, 99)
                    .Cells(i, "G").Font.Bold = True 'negrita
                    
                Case "D"
                    .Cells(i, "G").Font.Color = RGB(1, 170, 99)
            End Select
        Next i
    End With
End Sub

 

publicado

La segunda  es que te modifique cuando modificas cualquier celda de la columna A sin tener que ejecutar la macro manualmente.

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim rng As Range
    Set rng = Intersect(Target, Me.Columns("A"))
    If rng Is Nothing Then Exit Sub
    Application.EnableEvents = False
    Call Poneformat
    Application.EnableEvents = True
End Sub

Sub Poneformat()
    Application.ScreenUpdating = False
    With Sheets("Plantilla")
        For i = 17 To .Range("A" & Rows.Count).End(xlUp).Row
            .Cells(i, "G").ClearFormats

            Select Case .Cells(i, "A")
                Case "SI"
                    .Cells(i, "G").Font.Color = RGB(1, 70, 99)
                    .Cells(i, "G").Font.Bold = True 'negrita
                    .Cells(i, "O").Font.Color = RGB(100, 110, 0)
                    .Cells(i, "F") = "-"

                Case "I"
                    .Cells(i, "G").Font.Color = RGB(1, 701, 99)
                    .Cells(i, "G").Font.Bold = True 'negrita

                Case "D"
                    .Cells(i, "G").Font.Color = RGB(1, 170, 99)
            End Select
        Next i
    End With
    Application.ScreenUpdating = True
End Sub

image.gif.8a37055b1d00a05b3361f2cdf8452e54.gif

Conéctate para comentar

Podrás dejar un comentario después de conectarte



Conéctate ahora
×
×
  • Crear nuevo...

Información importante

Echa un vistazo a nuestra política de cookies para ayudarte a tener una mejor experiencia de navegación. Puedes ajustar aquí la configuración. Pulsa el botón Aceptar, si estás de acuerdo.