Я боролся с этим некоторое время сейчас. Мне нужно покрасить строки в листе Excel 6 на основе значения в столбце F. Все работает нормально, за исключением того, что код окрашивает строки в листе Excel 1! Помогите?

Вот мой код:

Sub color()

i = 2

Sheets(6).Select

For Each c In Sheets(6).Range("F2:F" & Range("F" & Rows.Count).End(xlUp).Row)

    If Cells(i, 6).Value > 50 Then
        Rng = "A" & i & ":" & "H" & i
        Range(Rng).Interior.color = 4 'green

        ElseIf Cells(i, 6).Value < 35 Then
        Rng = "A" & i & ":" & "H" & i
        Range(Rng).Interior.ColorIndex = 3 'red

        Else
        Rng = "A" & i & ":" & "H" & i
        Range(Rng).Interior.ColorIndex = 2

    End If
    i = i + 1

    Next c
End Sub

1 ответ1

1

Этот макрос будет окрашивать каждую строку в соответствии со значением в столбце "F".

Если строка пуста или значение не является числом, оно будет пропущено.

Sub color()

  Dim color As Integer

  For Each cell In Sheets(6).Range("F2:F65536")

    If IsEmpty(cell) Then GoTo nextcell:
    If Not IsNumeric(cell.Value) Then GoTo nextcell:

    If cell.Value > 50 Then
      color = 4
    ElseIf cell.Value < 35 Then color = 3
    Else: color = 2
    End If
    cell.EntireRow.Interior.ColorIndex = color
nextcell:
  Next cell

End Sub

В приведенном выше коде вы используете два типа циклов одновременно. Используемый цикл For Each проходит по каждому элементу массива, который вы ему предоставляете. В этом случае массив представляет собой диапазон ячеек.

Каждая итерация цикла For Each использует имя переменной, указанное в объявлении, в качестве ссылки на элемент массива. Таким образом, в приведенном выше примере каждая итерация будет присваивать ячейку в столбце F имени переменной, которую я дал cell .

Все это говорит о том, что когда вы используете цикл For Each , вам не нужно использовать увеличивающуюся индексную переменную (например, i) для вызова ячейки, потому что у вас уже есть весь объект ячейки, на который указывает ваша cell переменной.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .