Formato condicional más de 3 condiciones en Excel 2003

En esta ocasión comparto una macro que permitirá a las versiones de Excel 2003 y anteriores, utilizar más de 3 opciones de formato condicional. Esto se hace mediante el constructor Select Case con el evento Change de la hoja activa.

Código:

'---------------------------------------------------------------------------------------
' Procedure : Worksheet_Change
' Date      : 24/04/2011
' Purpose   : Formato condicional con más de 3 condiciones en Excel 2003 (-)
'---------------------------------------------------------------------------------------
'
Private Sub Worksheet_Change(ByVal Target As Range)
    On Error GoTo fin
    If Application.Intersect(Target, [A3:I21]) Is Nothing Then Exit Sub
    With ThisWorkbook.ActiveSheet
        Select Case Target
        Case .Range("K3").Value
            Target.Interior.ColorIndex = .Range("K3").Interior.ColorIndex
        Case .Range("K4").Value
            Target.Interior.ColorIndex = .Range("K4").Interior.ColorIndex
        Case .Range("K5").Value
            Target.Interior.ColorIndex = .Range("K5").Interior.ColorIndex
        Case .Range("K6").Value
            Target.Interior.ColorIndex = .Range("K6").Interior.ColorIndex
        Case .Range("K7").Value
            Target.Interior.ColorIndex = .Range("K7").Interior.ColorIndex
        Case .Range("K8").Value
            Target.Interior.ColorIndex = .Range("K8").Interior.ColorIndex
        Case .Range("K9").Value
            Target.Interior.ColorIndex = .Range("K9").Interior.ColorIndex
        Case .Range("K10").Value
            Target.Interior.ColorIndex = .Range("K10").Interior.ColorIndex
        Case .Range("K11").Value
            Target.Interior.ColorIndex = .Range("K11").Interior.ColorIndex
        Case .Range("K12").Value
            Target.Interior.ColorIndex = .Range("K12").Interior.ColorIndex
        Case Else
            Target.Interior.ColorIndex = xlColorIndexNone
        End Select
    End With
    Exit Sub
fin:
    MsgBox "Intentaste borrar más de una celda a la vez. Debes de borrar celda por celda", vbCritical, "Error de borrado"
End Sub

:: Descarga el ejemplo

You may also like...

5 Responses

  1. Gracias Sergio, el ejemplo esta maravilloso y es la solució a una hoja de control que aplico en mi oficina, el probelma es que trato y trato de modificar el codigo para que funcione unicamente en el rango (F11:F1011) y que tome los datos de referencia para el combo desde (F3:F7) y de (I3:I7) pero del todo no me funciona, te solicito tu ayuda a ver si puedo resolver el caso que tengo en la oficina. Gracias.

    • sergioacamposh says:

      Exactamente qué parte no te funciona ?? En la siguiente línea es dónde debes especificar tu rango que se va a colorear:

      If Application.Intersect(Target, [F11:F1011]) Is Nothing Then Exit Sub

      Te comento que el combo no puede utilizarse en rangos que no sean continuos. Aunque no es obligatorio que uses un combo, ya que en el código, donde se especifican los CASE’s es donde haces referencia a cada celda de origen,

      Espero haberme explicado, de lo contrario, enviame un ejemplo de tu archivo para apoyarte.

  2. mahf says:

    Estuve buscando la solucion a este problema y gracias a ti la encontre. Solo es cuestion de cambiar los parametros a las celdas que queramos.

    Muchisimas gracias.

  1. December 29, 2011

    […] Formato condicional más de 3 condiciones en Excel 2003 […]

Leave a Reply

Your email address will not be published. Required fields are marked *

%d bloggers like this: