valor una segĂșn segun salga rojo que poner para otra numero hacer funcion formato filas determinado dependiendo cumple condicional condicion con como colorear color celda cambie cambiar azul automaticamente excel vba excel-vba

excel - una - Celda de color basada en el valor en la celda



funcion si color celda (3)

Suponga que ese valor es el número almacenado en la columna y luego:

If value >= 0 AND value <= 500 Then ColRange.Interior.Color = RGB(255,0,0) ElseIf value >= -5 Then ColRange.Interior.Color = RGB(255,255,200) Else ColRange.Interior.Color = RGB(0,255,0) End If

Y suponiendo que valores de más de 500 o menos de -350 o no son posibles o validados por su secuencia de comandos. Además, sus rangos se superponen un poco, ¿de qué color debería ser 0? Rojo o amarillo?

Usando una macro, he consolidado la información de varios libros de trabajo en una hoja en el nuevo libro de trabajo.

En una columna, he creado un rango llamado ColRange. Esa columna tiene números que van desde -350 a 500.

¿Cómo cambio el color de las celdas según el valor del texto en la celda?
rojo (0-500) amarillo (-5-0) verde (-350--5)


Esto es en respuesta a la pregunta original, es una simple modificación de la respuesta de Vincent:

Si se trata de un rango con nombre (usando la interfaz de usuario: Insertar, Nombre, Definir):

Dim c As Range For Each c In Range("ColRange").Cells If c.Value >= 0 And c.Value <= 500 Then c.Interior.Color = RGB(255, 0, 0) ElseIf c.Value >= -5 Then c.Interior.Color = RGB(255, 255, 200) Else c.Interior.Color = RGB(0, 255, 0) End If Next c

Si es un objeto de rango, definido en el código:

Dim c as Range For Each c In colRange.Cells If c.Value >= 0 And c.Value <= 500 Then c.Interior.Color = RGB(255, 0, 0) ElseIf c.Value >= -5 Then c.Interior.Color = RGB(255, 255, 200) Else c.Interior.Color = RGB(0, 255, 0) End If Next c

Creo que la respuesta de Vincent no funcionará porque intenta operar en todo el rango de ColRange, dentro del If Then, en lugar de operar en cada celda de a una por vez. (Por esta razón, es posible que también desee envolverlo con Application.ScreenUpdating = False


Eche un vistazo al formateo condicional . Es posible que ni siquiera necesites VBA para hacer esto.

Dicho esto, el código de VBA sería algo como esto:

Public Sub colorit() Dim colRange As Range Dim rowNum As Integer Dim rnum As Integer rnum = 20 Set colRange = Range(Cells(2, 9), Cells(rnum, 9)) For rowNum = 1 To colRange.Rows.Count If colRange.Cells(rowNum, 1).Value <= -5 Then colRange.Cells(rowNum, 1).Interior.Color = RGB(0, 255, 0) ElseIf colRange.Cells(rowNum, 1).Value <= 0 Then colRange.Cells(rowNum, 1).Interior.Color = RGB(255, 255, 0) ElseIf colRange.Cells(rowNum, 1).Value <= 500 Then colRange.Cells(rowNum, 1).Interior.Color = RGB(255, 0, 0) End If Next rowNum End Sub