Esta macro irá colorir cada linha de acordo com o valor na coluna "F".
Se a linha estiver vazia ou o valor não for um número, ela será ignorada.
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
No seu código acima, você está usando dois tipos de loops simultaneamente. O loop For Each
que você usou faz um loop em cada elemento da matriz que você fornece. Nesse caso, o array é um intervalo de células.
Cada iteração de um loop For Each
usa o nome da variável que você fornece na declaração como uma referência ao elemento da matriz. Portanto, na instância acima, cada iteração atribuirá uma célula na coluna F ao nome da variável que eu dei a cell
.
Tudo isso para dizer que quando você está usando um For Each
loop, você não precisa usar uma variável de índice de incremento (como i
) para chamar uma célula porque você já tem todo o objeto de célula sendo apontado para com sua variável cell
.