none
(Excel 2007) Formatos conidicionales RRS feed

  • Pregunta

  • 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/

    miércoles, 5 de junio de 2013 6:43