Cambiar color de rango de celdas automáticamente al cambiar el valor en una celda

Tengo una base de datos en excel de más de 1000 entradas, cada item contiene datos desde la columna B hasta la columna R, lo que necesito es crear una macro que haga que cada fila desde B hasta R cambie según el valor de cada celda de la columna I, por ejemplo si la celda I830 dice "Cotizando" el rango B830:R830 se pinte de amarillo si dice "OC en aprobación" o "Aprobada" el rango B830:R830 se pinte de verde y si dice "Facturada" o "Anulada" el rango B830:R830 se pinte de blanco, pero que el cambio sea automático al variar el texto de la celda I830 y así para cada fila.

2 Respuestas

Respuesta
1

Pon la macro en los eventos de tu hoja

Private Sub Worksheet_Change(ByVal Target As Range)
'Por.Dante Amor
    If Target.Count > 10 Then Exit Sub
    If Not Intersect(Target, Range("I:I")) Is Nothing Then
        For Each c In Target
            Select Case c.Value
                Case "Cotizando"
                    Range("B" & c.Row & ":R" & c.Row).Interior.ColorIndex = 6
                Case "OC en aprobación", "Aprobada"
                    Range("B" & c.Row & ":R" & c.Row).Interior.ColorIndex = 4
                Case "Facturada", "Anulada"
                    Range("B" & c.Row & ":R" & c.Row).Interior.ColorIndex = 1
            End Select
        Next
    End If
End Sub

Si cambias cualquier dato de la columna I se actualiza el color, pero si en la columna tienes fórmulas que se actualizan con el resultado de otras celdas, entonces no se va a actualizar el color. En caso de tener fórmula en la columna I, deberás decirme cuál es la fórmula para adaptar la macro.

Si no es el caso y actualizas directamente en la celda, entonces el color se actualizará automáticamente, puedes actualizar hasta 10 celdas de forma simultánea, si requieres de más celdas, cambia el 10 de la macro, por ejemplo, por 100.

'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias
Respuesta

Revisa esta respuesta, puede ayudarte con lo que necesitas: Cambiar color de cada casilla según precio

Quedo pendiente.

Un saludo

Si has logrado una solución, recuerda finalizar y puntuar la pregunta, en caso contrario no dudes en ampliar tu descripción

Con los formatos condicionales ya lo trabaje anteriormente pero a medida que voy ingresando más items se vuelve demasiado lento copiar los formatos a la fila siguiente y se hace muy tedioso el trabajo, por eso requiero hacerlo con macros para que sea más rápido.

Te dejo el código que solventa tu situación:

Private Sub Worksheet_Change(ByVal Target As Range)
''Creada por nefese en 170104 para LuisAngelRodriguez en TodoExpertos.com
''Aplica formatos condicionales, según los valores y formatos establecidos en la columna A,
''a las columnas B a R para cada fila al cambiar el valor de la columna I
If Target.Column = 9 Then
  If Application.WorksheetFunction.CountIf(Range("a:A"), "=" & Cells(Target.Row, Target.Column).Value) > 0 Then
    indice = Cells(Application.WorksheetFunction.Match(Target.Value, Range("a:A"), 0), Range("A:A").Column).Interior.ColorIndex
  Else
    indice = 3
  End If
  Intersect(Range("B:R"), Target.EntireRow).Interior.ColorIndex = indice
End If
End Sub

debes pegarlo en el código de la hoja que tienes tu base de datos (click derecho sobre la pestaña de la hoja-->ver código). He de mencionar que la macro hace referencia a la columna A:A, donde yo he ubicado los valores y sus correspondientes formatos para determinar cual es el caso a aplicar. En tu caso puede ser necesario variar la ubicación de este rango para que no interfiera con tu información pero debes, entonces, variar la referencia en el código. Adicionalmente si el valor de la columna I no coincide con ninguna de las opciones, la fila se rellena en color rojo, si deseas evitar esto cambia esta linea

indice = 3

por esta

indice = 0

Espero te puedas solucionar

NotaFinal: Al copiar el código fíjate que el carácter "&" no sea reemplazado por "&" (es algo de la página de TodoExpertos que al menos ocurre en mi pc)

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas