VBA: como colorir linhas com base no valor em uma coluna específica - Colorir folha errada

0

Eu tenho lutado com isso por um tempo agora. Preciso colorir linhas na planilha 6 do Excel com base no valor da coluna F. Tudo funciona bem, exceto que o código está colorindo as linhas na planilha 1 do Excel! Ajuda?

Aqui está o meu código:

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
    
por Ode 14.07.2014 / 14:55

1 resposta

1

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 .

    
por 21.11.2014 / 19:00