Como formatar células entre duas datas com uma cor baseada em um valor em vba?

0

(desculpas se esta questão é difícil de entender, eu não consigo postar uma imagem)

Eu tentei encontrar uma solução para isso online, mas não tive muita sorte.

Idealmente, desejo usar a formatação condicional para destacar cada célula em uma linha de datas entre duas datas. Existe um problema .. Eu quero que a cor seja especificada por um valor baseado em outra célula .. se isso puder ser feito usando um módulo então ótimo!

i.e. Inseri um dia a cada dia no calendário horizontalmente na planilha da F2 durante um ano inteiro. SE C2 = 01/12/14 & D2 = 24/12/14 e E2 = 3. Todas as células entre as datas de C2 e D2 irão preencher com a cor VERMELHA .. da mesma forma com IF C3 = 01/05/14 & D3 = 05/05/14 e E3 = 2, as células serão preenchidas com a cor azul.

obrigado

    
por damm 29.01.2014 / 16:30

1 resposta

1

Não acredito que exista qualquer método para escolher dinamicamente a cor ao usar a formatação condicional incorporada do Excel. Você poderia, como você adivinhou, usar algum VBA para realizar isso.

Supondo que a coluna C tenha a data mais baixa no intervalo, a coluna D tenha a data superior no intervalo, a coluna E contém um índice de cores (consulte aqui ), e a coluna F tem a data que estamos testando (e esta é a célula que estamos colorindo) você pode criar a seguinte sub-rotina:

Public Sub update_colors()
    Dim rngDates As Range
    Set rngDates = Sheet1.Range("F2:F3")

    Dim rngDateCell As Range
    For Each rngDateCell In rngDates.Cells
        If Sheet1.Cells(rngDateCell.Row, 3).Value <= rngDateCell.Value And Sheet1.Cells(rngDateCell.Row, 4).Value >= rngDateCell.Value Then
            rngDateCell.Interior.ColorIndex = Sheet1.Cells(rngDateCell.Row, 5).Value
        End If
    Next rngDateCell

End Sub

Defina F2: F3 na terceira linha para o intervalo inteiro de datas em sua planilha.

Você pode iniciar esta sub-rotina / udf com um botão. Na guia do desenvolvedor (vá em aqui para obter instruções sobre como ativá-lo, se você não tiver já) Clique em "Inserir" e escolha o botão em "Controles de formulário". Desenhe o botão em algum lugar da folha (você pode movê-lo depois) e escolha a sub-rotina que acabou de criar na lista. Agora, quando você clica no botão, a sub-rotina será executada.

Se você não gosta das cores, pode usar algo além de .interior.colorindex () para definir a cor da célula. Eu sou um grande fã .Interior.Color = RGB (,) Você precisaria ter os valores RGB na planilha em algum lugar para conseguir isso, mas você terá milhões de cores para escolher, em vez de apenas os 56 que colorindex permite.

    
por 29.01.2014 / 17:47