Página 1 de 1

Ajuda - Macro Formatação condicional

Enviado: 18 Jul 2019 às 09:18
por julianaggamba
Bom dia!
Alguém saberia me dizer o que está errado nesse código? Quando executo, a fórmula fica como falso na regra de formatação condicional


Sub REGRA1()
'
' REGRA1 Macro
'

'
Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _
Selection.Cells.Value = Now
Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
With Selection.FormatConditions(1).Interior
.PatternColorIndex = xlAutomatic
.ThemeColor = xlThemeColorAccent4
.TintAndShade = 0.599963377788629
End With
Selection.FormatConditions(1).StopIfTrue = False
Next
End Sub

Gostaria de criar um macro para executar uma formação condicional na linha selecionada.

Re: Ajuda - Macro Formatação condicional

Enviado: 18 Jul 2019 às 11:24
por Jimmy
Olá Juliana,

Veja se isto te ajuda.
Código: Selecionar todos
Sub REGRA1()
Selection.FormatConditions.Delete
Selection.FormatConditions.Add Type:=xlExpression, Formula1:="=" & Selection.Cells.Address & "=agora()"
Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
With Selection.FormatConditions(1).Interior
    .PatternColorIndex = xlAutomatic
    .ThemeColor = xlThemeColorAccent4
    .TintAndShade = 0.599963377788629
End With
Selection.FormatConditions(1).StopIfTrue = False
'Next
End Sub
Três observações:

- Há um NEXT na penúltima linha, mas não há um FOR aberto anteriormente, logo, o NEXT causa erro.

- A macro não criará a condicional na linha selecionada, como você mencionou, mas nas células selecionadas, podendo inclusive serem de linhas diferentes (Ex: selecionando C4:F10)

- Now, que no Excel em português é o Agora() tem a duração de 1 segundo, logo, a célula formatada ficaria pintada por apenas 1 segundo (isso se der sorte do excel recalcular aquela célula naquele instante). Se pretende marcar quando um determinado momento for alcançado, recomendo usar ">" ou "<" (dependendo da finalidade) ao invés de "=", pois o "=" é efêmero.

Jimmy

Re: Ajuda - Macro Formatação condicional

Enviado: 18 Jul 2019 às 13:06
por julianaggamba
Olá Jimmy!

Muito obrigada!
Alterei o "agora" para "hoje", pois preciso apenas da data, e deu certo.

Sub REGRA1()
'Regra hoje
If Selection.FormatConditions.Delete Then
Selection.FormatConditions.Add Type:=xlExpression, Formula1:="=" & Selection.Cells.Address & "=hoje()"
Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
With Selection.FormatConditions(1).Interior
.PatternColorIndex = xlAutomatic
.ThemeColor = xlThemeColorAccent4
.TintAndShade = 0.599963377788629
End With
Selection.FormatConditions(1).StopIfTrue = False

Preciso também colocar mais duas condições na mesma linha:
A primeira seria pintar a linha toda se a célula selecionada for menor que hoje e a célula da direita estiver em branco, e pintar a linha de outra cor se a célula selecionada for menor que a célula da direita

Fiz assim mas sei que não está certo, se puder me ajudar agradeço.

'Regra Atrasado
Else: Selection.FormatConditions.Delete
Selection.FormatConditions.Add Type:=xlExpression, Formula1:="=" & Selection.Cells.Address & "<hoje()"
Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
With Selection.FormatConditions(1).Interior
.PatternColorIndex = xlAutomatic
.Color = 10461183
.TintAndShade = 0.599963377788629
End With
Selection.FormatConditions(1).StopIfTrue = False

'Regra Entregue Atrasado
Else: Selection.FormatConditions.Delete
Selection.FormatConditions.Add Type:=xlExpression, Formula1:="=" & Selection.Cells.Address & "I:<hoje()"
Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
With Selection.FormatConditions(1).Interior
.PatternColorIndex = xlAutomatic
.Color = 10461184
.TintAndShade = 0.599963377788629
End With
Selection.FormatConditions(1).StopIfTrue = False

Obrigada!

Ajuda - Macro Formatação condicional

Enviado: 18 Jul 2019 às 13:27
por julianaggamba
Teria como criar um botão para inserir linha e nessa linha inserir essas três regras?

Ajuda - Macro Formatação condicional

Enviado: 18 Jul 2019 às 13:50
por Jimmy
Juliana, tem sim.

Gostaria que você enviasse uma planilha modelo para que possamos trabalhar sobre ela. Assim seremos mais precisos.

Mande exemplos das situações, explicando porque está ou não pindata.

No post anterior você falou em "pintar a linha toda". Acho que não deve ser toda; especifique qual a faixa da linha. Note que as células que serão pintadas terão formatação condicional também.

Jimmy

Re: Ajuda - Macro Formatação condicional

Enviado: 18 Jul 2019 às 16:18
por julianaggamba
Ok Jimmy, segue anexo.

Mandei apenas um exemplo com a formatação condicional para você entender.

Nesse caso, gostaria de colocar um botão com macro para ir adicionando linhas na planilha já com a formatação condicional.

Obrigada pela atenção!

Re: Ajuda - Macro Formatação condicional

Enviado: 19 Jul 2019 às 00:09
por Jimmy
Juliana,

Veja se te atende. Faça muitos testes.

Eu coloquei o botão na célula C1, mas pode ser mudado.

É possível também acionar a macro pelo teclado, sem usar o botão. Basta segurar as teclas CTRL + SHIFT pressionadas, e teclar Q.

Jimmy

Ajuda - Macro Formatação condicional

Enviado: 19 Jul 2019 às 17:01
por julianaggamba
Certo Jimmy!
Muito obrigada pela ajuda!

Juliana

Ajuda - Macro Formatação condicional

Enviado: 19 Jul 2019 às 17:18
por Jimmy
Disponha Juliana,

Se está tudo resolvido, não esqueça de encerrar o tópico pois isso ajuda a organizar melhor o forum.

Jimmy San Juan