2016-07-01 5 views
0

Я пишу код, так что, когда значение ячейки имеет определенное значение, выделяется диапазон для этой строки (столбцы G-O, но не вся строка). Приведенный ниже код правильно распознает значения «c», но окрашивает случайные строки. Например, когда строка 2 (O2) имеет значение менее 40, она цветет строку 4. Пожалуйста, помогите!Excel VBA: Диапазон цветов на основе значения ячейки

Sub color() 

    Dim lastrow As Long 
    Dim c As Variant 

    lastrow = Range("o" & Rows.Count).End(xlUp).Row 
    For Each c In Range("O1:O" & lastrow) 
     If c.Value < 40 Then 
      ' MsgBox (c) 
      Range(Cells(c, 7), Cells(c, 15)).Interior.ColorIndex = 7 
     End If 
    Next c 

End Sub 
+3

Условное форматирование сделает это без необходимости VBA. Есть ли причина, по которой вы хотите сделать это в VBA? –

ответ

3

См. Нижеприведенные изменения. Это связано с тем, как вы используете Cells(). То, как вы его используете, будет использовать значение «c», а не строку.

Sub color() 

Dim lastrow As Long 
Dim c As Variant 
lastrow = Range("o" & Rows.Count).End(xlUp).Row 
    For Each c In Range("O1:O" & lastrow) 
     If c.Value < 40 Then 
      ' MsgBox (c) 
      Range(Cells(c.Row, 7), Cells(c.Row, 15)).Interior.ColorIndex = 7 
     End If 
    Next c 

End Sub 
+0

Большое спасибо, что сейчас так много смысла !!!! – spaindc

Смежные вопросы