VBA:如何根据特定列中的值为行着色 - 为错误的工作表着色

VBA:如何根据特定列中的值为行着色 - 为错误的工作表着色

我已经为此苦苦挣扎了一段时间。我需要根据 F 列中的值为 Excel 工作表 6 中的行着色。除了代码为 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

此宏将根据“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

相关内容