Macro para formatação condicional

Olá pessoal!

Tentando gravar uma macro para inserir automaticamente uma formatação condicional do tipo “A fórmula é”: E($E$2=J$9;J12+SOMASE($E7:P7;“Saída”;$E12:P12)-SOMASE($E7:P7;“Entrada”;$E12:P12)<>$D12) no intervalo de células: J12:J93 (que será variável), me retorna o seguinte erro:

sub Formatar_cond
rem ----------------------------------------------------------------------
rem define variables
dim document   as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

rem ----------------------------------------------------------------------
rem dispatcher.executeDispatch(document, ".uno:ConditionalFormatManagerDialog", "", 0, Array())


end sub 

Mesmo retirando o rem da linha com erro, o comando somente abre a janela de formatação.
Tentei com a linha corrigida acioná-la por um botão e gravar o restante, porém não dá certo, alguém pode me orientar sobre o assunto ?

Ola @LeandroVieira, o gravador de macro não tem capacidade de gravar as informações dos parâmetros da Formatação condicional, entre muitos outros. Só para tirar dúvida, a fórmula indicada acima, quando em uma célula normalmente, é funcional? Mas qual a necessidade de uma macro, que ao meu ver, só vai rodar uma vez, pois as informações estarão gravadas? Me desculpe mas não entendi…

Foi uma tentativa incorreta, acho melhor fazer a formatação em uma célula e depois copiar e colar somente o formato nas células desejadas.
Mas uma dúvida permanece: Onde encontro esses parâmetros que o gravador não inseri, ainda não entendo de programação, mas quando começar já saberei onde encontrar?

Oi @LeandroVieira, infelizmente o gravador, não grava tudo. Sobre a formatação condicional só fará se for verdadeira a condição(pergunta), se necessária inclua nova condição para a falsa ser verdadeira e uma nova formatação. Por exemplo, valores acima de 5 cor Vermelha se diferente Verde. A formula será: A1>5 em aplicar estilo VERMELHO (já criado anteriormente) incluir outra condição A1<6 e estilo VERDE.(já criado anteriormente).

Continuando: também existe a possibilidade de formatação na formula: Se for o caso acima do meu exemplo: considerando que A1 é resultado de uma FORMULA: seria =FORMULA+ESTILO(SE(ATUAL()>5;"VERMELHO";"VERDE"))

Obrigo pelos comentários e respostas, irei testar todos!
Não haveria necessidade da condição falsa, pois somente formatará se for verdadeira.

Bom dia,


Uma macro para inserir formatação condicional, sem usar o gravador (limitado e experimental), seria:
Sub InserirFormatacaoCondicional
Dim oDoc As Object, oPlan As Object
Dim oIntervalo As Object, oFormatoCondicional As Object
Dim oCondicoes(2) As New com.sun.star.beans.PropertyValue
  
   oDoc = ThisComponent
   oPlan = oDoc.Sheets.getByName( "Planilha1" )
   oIntervalo = oDoc.CurrentController.Selection '<<< Intervalo selecionado'
   oFormatoCondicional = oIntervalo.ConditionalFormat

   oCondicoes(0).Name = "Operator"
   oCondicoes(0).Value = com.sun.star.sheet.ConditionOperator.FORMULA
   oCondicoes(1).Name = "Formula1"
   oCondicoes(1).Value = "E($E$2=J$9;J12+SOMASE($E7:P7;""Saída"";$E12:P12)-SOMASE($E7:P7;""Entrada"";$E12:P12)<>$D12)"
   oCondicoes(2).Name = "StyleName"
   oCondicoes(2).Value = "Good"
   
   oFormatoCondicional.addNew( oCondicoes() )
   oIntervalo.ConditionalFormat = oFormatoCondicional
End Sub

Atte,

Do intervalo “J$12:j$93”, preciso que a coluna seja variável, pois a macro anterior já me passa a localização da palavra “Fechamento”, e a partir dela aplicarei a formatação.

@LeandroVieira, como a “macro anterior’” retorna a posição? É string (texto) ou não? Para adaptar esta, preciso saber como é que a outra retorna.

Seria uma macro gravada basicamente usando o localizar e substituir: buscando a palavra “fechamento”; com os parâmetros “Células Inteiras”; a opção Pesquisar em: Valores; e direção de pesquisa: Linhas, marcados.
Após localizada a palavra desceria duas células abaixo e selecionaria o intervalo a aplicar a formatação com CTRL+SHIFT+SETA P/ BAIXO, aplicando assim a formatação e indo para célula $D$12.

Troquei a linha que define o intervalo para uma que busca o que está selecionado no momento. Se a macro anterior, gravada, terminar com a seleção através do CTRL+SHIFT+SETA P/ BAIXO, a macro acima rodará perfeitamente. Veja se é isto.