Ed fez a pergunta sobre o Excel desta semana.
Preciso de uma macro simples do Excel que irá pesquisar - digamos - a coluna C e destacar em vermelho as células que contêm a data de hoje (data atual) e destacar em amarelo qualquer outra célula na coluna que esteja 15 dias no futuro a partir da data de hoje?
Os usuários do Excel 97 ou Excel 2000 podem aproveitar as vantagens da nova opção de Formatação Condicional. Vamos cobrir como fazer isso manualmente sem uma macro primeiro.
- Vá para a célula C1.
- No menu, escolha Formato, Formato condicional
- No lado esquerdo da caixa de diálogo, altere o menu suspenso para "A fórmula é"
- No lado direito da caixa de diálogo, digite:
=INT(C1)=TODAY()

- Clique em formato, clique em padrões, escolha vermelho. Clique OK
- Clique em Adicionar…
- No lado esquerdo da caixa de diálogo, altere o menu suspenso para "A fórmula é"
- No lado direito da caixa de diálogo, digite:
=AND(INT(C1)>TODAY(),(INT(C1)-TODAY())<16)
- Clique em Format, Click Patterns, Pick Yellow. Clique OK.
- Clique em OK para terminar de atribuir este formato condicional à célula C1.

Se o formato for inserido corretamente, a célula C1 mudará para vermelho se contiver a data de hoje e para amarelo se a data for nas próximas 15 semanas. A função TODAY () no formato garantirá que, se abrirmos a pasta de trabalho em outro dia, ela destacará em vermelho as células desse dia específico.
Agora você pode copiar a célula C1, destacar todos os dados na coluna C e fazer Editar> Colar especial> Formatos> OK para aplicar esse formato a cada célula na coluna C.
A macro a seguir irá automatizar a atribuição do formato condicional:
Sub Macro2() Range("C1").Select Selection.FormatConditions.Delete Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _ "=INT(C1)=TODAY()" Selection.FormatConditions(1).Interior.ColorIndex = 3 Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _ "=AND(INT(C1)>TODAY(),(INT(C1)-TODAY())<16)" Selection.FormatConditions(2).Interior.ColorIndex = 6 Selection.Copy FinalRow = Range("C15000").End(xlUp).Row Range("C2:C" & FinalRow).Select Selection.PasteSpecial Paste:=xlPasteFormats End Sub
Para usuários do Excel 95, você não tem formatação condicional, mas pode usar uma macro como esta:
Sub Macro95() ThisDate = Date FinalRow = Range("C15000").End(xlUp).Row For x = 1 To FinalRow ThisCell = Int(Range("C" & x).Value) If ThisCell = ThisDate Then Range("C" & x).Interior.ColorIndex = 3 Else DaysFromNow = ThisCell - ThisDate If DaysFromNow> 0 And DaysFromNow < 16 Then Range("C" & x).Interior.ColorIndex = 6 End If End If Next x End Sub
O recurso de fórmula da função de formato condicional é muito poderoso e permitirá que você destaque células que se enquadram em vários critérios.