Mudar a cor da celula no Libre Office Calc - VBA

Ola!

Preciso que a Linha 4 da minha planilha fique com a cor branca. Estou tentando com a VBA, mas não consigo como fazer!

Provavelmente inseriu linha, a inserção de linha, copia a formatação da superior.
Creio que ser mais rápido, retirar a cor da de cima.

Bom dia! Não posso retirar a cor da linha de cima por questão de estética. Essa planilha foi solicitada por outra pessoa.

Coloquei:
ChangeCellColor(“DadosAlunos”, “A4:M4”)

Porém coloriu a célula em vermelho.

Consegui!

Coloquei a linha de cima (3) em “Branco” e ocultei.

Obrigada! :smile:

pra remover a formatação voce pode usar o ClearContents

Aqui referencia para as Flags do ClearContents:
https://api.libreoffice.org/docs/idl/ref/namespacecom_1_1sun_1_1star_1_1sheet_1_1CellFlags.html

no exemplo abaixo usei a flag 32 e a 64, para ‘Limpar’ o conteúdo da célula.
[HARDATTR] = 32 → remove formatação manual
[STYLES] = 64 → remove formtação por estilo

Você pode usar quantas flags quiser, basta ir somando o valor da flag

Sub Teste
    Dim doc As Object
    Dim sheets As Object
    Dim plan_base As Object
    Dim range As Object
    
    doc = ThisComponent
    sheets = doc.Sheets
    plan_base = sheets.getByName("Planilha1")
    'plan_base = sheets(0)
    
    range = plan_base.GetCellRangeByName("A4:F4")

    range.ClearContents(32+64)
End Sub

ou se vc realmente quiser mudar apenas a cor de fundo da celula use CellBackColor

Sub Teste2
    Dim doc As Object
    Dim sheets As Object
    Dim plan_base As Object
    Dim range As Object
    
    doc = ThisComponent
    sheets = doc.Sheets
    plan_base = sheets.getByName("Planilha1")
    'plan_base = sheets(0)
    
    range = plan_base.GetCellRangeByName("A4:F4")

    'range.CellBackColor = RGB(255,255,255)
    range.CellBackColor = -1
End Sub

onde:
range.CellBackColor = RGB(255,255,255) → cor de fundo branca
range.CellBackColor = -1 → cor de fundo sem preenchimento (prefira isso)

uma terceira opção seria usar o CellStyle para definir um estilo para o intervalo de celulas. Talvez essa seja a opção mais adequada para seu caso.

Assim vc pode criar manualmente um estilo para o cabeçalho da sua tabela, e outro estilo para o corpo da tabela (ex: corpo_tabela), depois aplica o estilo ‘corpo_tabela’ nas celulas da sua tabela.

Sub Teste3
    Dim doc As Object
    Dim sheets As Object
    Dim plan_base As Object
    Dim range As Object
    
    doc = ThisComponent
    sheets = doc.Sheets
    plan_base = sheets.getByName("Planilha1")
    'plan_base = sheets(0)
    
    range = plan_base.GetCellRangeByName("A4:F4")

    range.CellStyle = "Error"
    'range.CellStyle = "corpo_tabela"
    
End Sub

Você pode usar um dos estilos padrões que já estão presente na planilha do calc ou criar um estilo personalizado. No caso do exemplo usei o estilo ‘Erro’ no mas como é programação deve usar o nome original em inglês ‘Error’. Se for usar um estilo personalizado pode criar e usuar um nome em portugues mesmo.

Menu Ferramentas > Ferramentas de desenvolvimento >
Estilos > CellStyles

Seguindo essa caminho acima vc vê os nomes originais dos estilos presentes na sua planilha