Hola,
En mi archivo Excel aplico diferentes formatos condicionales a una serie de celdas dentro de una hoja mediante VBA. El código es el siguiente:
Sub ReFormatPresencias(LastRowFilled As Integer)
Dim oFc As FormatCondition
Dim xlRg As Range
Set Wk = ThisWorkbook
Set Ws = Wk.Worksheets("Presencias")
Ws.Select
Ws.Cells.Locked = True
Ws.Cells.FormatConditions.Delete
Set xlRg = Ws.Range("C4:AG" & LastRowFilled)
With xlRg
Set oFc = .FormatConditions.Add(xlCellValue, xlEqual, "=""P""")
oFc.Font.Color = RGB(155, 187, 89)
oFc.Interior.Color = RGB(155, 187, 89)
oFc.Borders.LineStyle = xlContinuous
oFc.Borders.Color = RGB(255, 255, 255)
oFc.StopIfTrue = True
Set oFc = .FormatConditions.Add(xlCellValue, xlEqual, "=""D""")
oFc.Font.Color = RGB(148, 139, 84)
oFc.Interior.Color = RGB(148, 139, 84)
oFc.Borders.LineStyle = xlContinuous
oFc.Borders.Color = RGB(255, 255, 255)
oFc.StopIfTrue = True
Set oFc = .FormatConditions.Add(xlCellValue, xlEqual, "=""F""")
oFc.Font.Color = RGB(255, 255, 153)
oFc.Interior.Color = RGB(255, 255, 153)
oFc.Borders.LineStyle = xlContinuous
oFc.Borders.Color = RGB(255, 255, 255)
oFc.StopIfTrue = True
Set oFc = .FormatConditions.Add(xlCellValue, xlEqual, "=""V""")
oFc.Font.Color = RGB(75, 172, 198)
oFc.Interior.Color = RGB(75, 172, 198)
oFc.Borders.LineStyle = xlContinuous
oFc.Borders.Color = RGB(255, 255, 255)
oFc.StopIfTrue = True
Set oFc = .FormatConditions.Add(xlCellValue, xlEqual, "=""B""")
oFc.Font.Color = RGB(128, 100, 162)
oFc.Interior.Color = RGB(128, 100, 162)
oFc.Borders.LineStyle = xlContinuous
oFc.Borders.Color = RGB(255, 255, 255)
oFc.StopIfTrue = True
Set oFc = .FormatConditions.Add(xlCellValue, xlEqual, "=""BL""")
oFc.Font.Color = RGB(178, 161, 199)
oFc.Interior.Color = RGB(178, 161, 199)
oFc.Borders.LineStyle = xlContinuous
oFc.Borders.Color = RGB(255, 255, 255)
oFc.StopIfTrue = True
Set oFc = .FormatConditions.Add(xlCellValue, xlEqual, "=""R""")
oFc.Font.Color = RGB(165, 165, 165)
oFc.Interior.Color = RGB(165, 165, 165)
oFc.Borders.LineStyle = xlContinuous
oFc.Borders.Color = RGB(255, 255, 255)
oFc.StopIfTrue = True
Set oFc = .FormatConditions.Add(xlCellValue, xlEqual, "=""E""")
oFc.Font.Color = RGB(247, 150, 70)
oFc.Interior.Color = RGB(247, 150, 70)
oFc.Borders.LineStyle = xlContinuous
oFc.Borders.Color = RGB(255, 255, 255)
oFc.StopIfTrue = True
Set oFc = .FormatConditions.Add(xlCellValue, xlNotEqual, "=""""")
oFc.Font.Color = RGB(149, 53, 53)
oFc.Interior.Color = RGB(217, 151, 149)
oFc.Borders.LineStyle = xlContinuous
oFc.Borders.Color = RGB(149, 53, 53)
oFc.StopIfTrue = True
End With
xlRg.Locked = False
Set xlRg = Ws.Range("AE3:AG3")
xlRg.Select
With xlRg
Set oFc = .FormatConditions.Add(xlExpression, , "=$AD$3>AE3")
oFc.Font.Color = RGB(187, 179, 169)
oFc.StopIfTrue = True
End With
Set xlRg = Ws.Range("C3:AG3")
xlRg.Select
With xlRg
Set oFc = .FormatConditions.Add(xlExpression, , "=NOMPROPIO(TEXTO(" & _
"FECHA(Año;MES(Mes&"" ""&Año);C$3);""dddd""))=""Domingo""")
oFc.Font.Color = RGB(187, 179, 169)
oFc.StopIfTrue = True
End With
Ws.Range("A1").Select
End Sub
(Wk y Ws son variables globales ya declaradas en otro módulo).
La cosa está en las dos últimas condiciones que aplico. En el orden en el que están, la penúltima se añade correctamente, pero la última condición añadida da error al darle formato a la fuente. Al cambiar el orden de estas dos últimas, la penúltima se añade
correctamente, pero la última, se añade correctamente, pero no se aplica el formato.
No se ver donde está el error (límite de formatos condicionales????). La hoja está desbloqueada al ejecutarse el código.
Un saludo y gracias por vuestro tiempo.
Working Into Binary (WIB) - http://workingintobinary.blogspot.com.es/