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
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.
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.
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.
Me da gusto.