Это ответ на оригинальный вопрос, это простая модификация ответа Винсента:
Если это именованный диапазон (с помощью пользовательского интерфейса: Вставить, Имя, Определить):
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
Если это объект диапазона, определенный в коде:
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
Я думаю, что ответ Винсента не совсем сработает, потому что он пытается воздействовать на весь диапазон ColRange, внутри If Then, вместо того, чтобы воздействовать на каждую ячейку по одному. (По этой причине вы можете также обернуть его с помощью Application.ScreenUpdating = False