Macro formato condicional

Hola a todos,
Tengo una hoja de excel 2003, en la cual, las celdas de la columna G (G2, G3, G4..) tienen cada una de ellas una lista desplegable con 5 opciones (1, 2, 3, 4 y 5) dependiendo de la opción que escojamos, la casilla de la derecha debe ponerse de un color diferente.
Por ejemplo: si en la casilla G3 escojo la opción 2, la celda H3 deberá ser amarilla. O si escojo la opción 4 del desplegable, la celda H3 deberá ponerse azul..
Lo quería hacer con el formato condicional, pero el excel 2003 solo permite 3 condiciones.. Y no puedo usar excel 2007 ya que debe ser compatible con ordenadores que solo tienen el 2003..
¿Alguien podría explicarme como hacer una macro paso por paso? ¿Porque creo que sera la única solución..
Muchas gracias.

1 respuesta

Respuesta
1
Suponiendo que la lista de valores para la validación fuera A1:A5 y que se aplicara a cada una de las celdas el formato que se desee para las celdas de la columna H, el siguiente código debería hacer el trabajo:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
    If (Intersect(Target, Me.[G:G]) Is Nothing) Or Target.Columns.Count > 1 Then Exit Sub
    Dim strPruebaValidación As String
    Set Target = Target.Cells(1, 1)
    On Error GoTo captura
    strPruebaValidación = Target.Validation.Formula1
    On Error GoTo 0
    Application.EnableEvents = False
    WorksheetFunction. Index(Range(Target. Validation. Formula1), WorksheetFunction. Match(Target. Value, Range(Target. Validation.Formula1), 0), 1). Copy
    Target.Offset(, 1).PasteSpecial Paste:=xlPasteFormats
    Target.Select
    Application.EnableEvents = True
    Application.CutCopyMode = False
    Exit Sub
captura:
    Exit Sub
End Sub
El código va en el módulo de la hoja (click derecho sobre su solapa -> Ver Código)
En un libro nuevo he hecho una prueba y no me funciona... no se si hago algo mal.
1º- he creado una lista (1, 2, 3, 4, y 5) de A1:A5
2º- en las celdas G1, G2, G3... he hecho: Datos>Validación>Lista.. y les he asignado esta lista para que al clicar se abra un desplegable.
3º- he hecho click solapa hoja1>ver código y he pegado el código que me has pasado.
¿Qué más debo hacer? Cuando selecciono una opción de la lista en G1 en la celda de la columna H1 no sucede nada...
Muchas gracias por tu paciencia.
¿Estableciste para las celdas de la lista (A1:A5) el formato que quieres que tenga la columna H para cada uno de los valores de la columna G?
Si has hecho eso, ¿tienes autorizada la ejecución de código VBA? (En Herramientas -> Macros -> Seguridad)
En cualquier caso, he subido un ejemplo con el código funcionando a www.jrgc.es/ejemplos/ejemplo_20090506a.xls
Es verdad! funciona perfecto... muchas gracias.
Por cierto, si quisiera poner la lista de valores A1:A5 en la hoja2.. ¿la linea de código que necesito modificar es esta no?:
WorksheetFunction.Index(Range(Target.Validation.Formula1), WorksheetFunction.Match(Target.Value, Range(Target.Validation.Formula1), 0), 1).Copy
Si no es así indicame por favor en que parte del código le decimos que coja el formato de las celdas A1:A5 de la hoja1 para que pueda adaptarlo a mi excel, muchísimas gracias!
Hasta donde yo sé, no es posible usar como lista para las validaciones rangos que no estén en la misma hoja.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas