Ir ao conteúdo
  • Cadastre-se

Libreoffice calc - alterar cor da linha coluna da célula ativa.


Posts recomendados

Olá pessoal sou iniciante no Calc ooo Basic.

Quero que ao selecionar qualquer uma célula da planilha sua linha e coluna altere a cor de fundo.

Gostaria de ajuda passo a passo desde o momento em que crio a planilha.

Consegui fazer isso no excel funciona legal.

Se alguém puder me ajudar fico muito grato.

Link para o comentário
Compartilhar em outros sites

Olá Tiank.

Quero fazer um código que faça o seguinte:

Quando a célula "A10" receber o foco a linha 10 e coluna "A" mude a cor de fundo.

Quando a célula "AB5" receber o foco a linha 5 e coluna "AB" mude a cor de fundo.

O código até sei como me virar, agora onde coloco o código. É bem coisa de iniciante.

Obrigado.

Exemplo.ods

Link para o comentário
Compartilhar em outros sites

@daniellopes2006,

 

Se o arquivo é novo, é preciso criar um módulo dentro da biblioteca padrão (standard) do mesmo para receber o código:

  1. No menu "Ferramentas" vá em "Macros" > "Organizador de Macros" > "LibreOffice Basic..."
  2. No Diálogo que surgir, selecione o nome do arquivo em "Macro de" e depois o botão "Novo"
  3. Será sugerido "Module1". Renomeei ou deixe como está.
  4. Será aberta a IDE do LibreOffice Basic.

 

Especificamente para o que você quer, é necessário atribuir o código ao evento "Seleção alterada" da planilha:

  1. Aba da Planilha > "Eventos de Planilha..." > Evento "Seleção Alterada" > Botão "Macro"
  2. Em Biblioteca navegue até o "Module1" do arquivo e selecione a macro.
    Sempre que uma nova célula for alterada, o Calc disparará a rotina.

 

Minha sugestão de código:

' Variáveis globais
Global gCol, gLin

Sub MudarFundo( oEv )
' Atribuir ao Evento de Planilha: Seleção alterada
On Error GoTo SairErro

	If Not isEmpty(gCol) Then
	   Call LimparFundoSelecaoAntiga
	End If
	
	oCol = oEv.Columns.getByIndex(0)
	oLin = oEv.Rows.getByIndex(0)
	
	oCol.CellBackColor = RGB( 255,255,0 )
	oLin.CellBackColor = RGB( 255,255,0 )
	
	gCol = oCol
	gLin = oLin

SairErro:
End Sub

Sub LimparFundoSelecaoAntiga
	
	gCol.setPropertyToDefault("CellBackColor")
	gLin.setPropertyToDefault("CellBackColor")

End Sub

 

[]s.

TianK

 

Exemplo_com_macro.ods

  • Curtir 4
  • Amei 1
Link para o comentário
Compartilhar em outros sites

@TianK,

 

Eu não entendo nada dessas programações, mas conseguiu inserir essa macro com a ajuda das suas explicações detalhadas.

 

Inclusive, consegui fazer uma alteração para destacar apenas a linha, no lugar de linha e coluna.

 

Mas na minha planilha existem algumas formatações condicionais que alteram o plano de fundo da linha e, acho que por isso, a macro não funciona nessas linhas.

 

Será que você poderia ajudar um analfabeto de programação e fazer um código que também destacasse essas linhas com formatação condicional cuja célula estivesse sendo selecionada no momento. Claro que ao clicar numa célula de outra linha, a formatação condicional voltaria.

 

Utilizo o Apache OpenOffice 4.1.2.

 

Vou mandar o arquivo para você por mensagem.

 

Grato pela atenção.

 

Link para o comentário
Compartilhar em outros sites

Olá @TianK, aproveitando o assunto em questão, teria como disponibilizar o código para que somente a célula selecionada mude a cor de fundo para amarelo; e ao clicar em outra célula, a anterior voltar a cor normal? Uso o LibreOffice Calc v4.1.4.2. A propósito, qual a linguagem de programação usada na criação das Macros do LibreOffice? Saberia dizer se teria outras formas, além da criação de Macro, para este fim? Obrigado.

Link para o comentário
Compartilhar em outros sites

@TianK Usei o código que você postou acima e recebi o seguinte erro ao clicar em qualquer célula:

 

Ocorreu um erro de Scripting Framework durante a execução do script Basic vnd.sun.star.script:Standard.Module1.Main?language=Basic&location=document.

Mensagem: The following Basic script could not be found:
library: 'Standard'
module: 'Module1'
method: 'Main'
location: 'document'

 

Link para o comentário
Compartilhar em outros sites

Em 12/05/2016 às 12:43, k_dantas disse:

[...] teria como disponibilizar o código para que somente a célula selecionada mude a cor de fundo para amarelo; e ao clicar em outra célula, a anterior voltar a cor normal?

Façamos o seguinte: você disponibiliza um arquivo de exemplo, com dados com a formatação e o resultado desejado, como fizeram os outros,  e eu vejo o que pode ser feito quanto a adaptar o código. Alterar a cor de fundo da célula selecionada para amarelo é tranquilo, agora "voltar a cor normal" dependerá de como você está pensando em formatar as células.

 

 

Em 12/05/2016 às 12:43, k_dantas disse:

[...] A propósito, qual a linguagem de programação usada na criação das Macros do LibreOffice? Saberia dizer se teria outras formas, além da criação de Macro, para este fim?

A linguagem que estamos usando neste tópico é chamada LibreOffice Basic ou OpenOffice Basic (Se estiver usando o Apache OpenOffice). Ela é derivada da linguagem Basic, preservando desta as principais características: tipos de dados, sintaxe, funções internas, operadores, comandos, etc. Mas é possível programar macros com outras linguagens: Python, JavaScript, Java e BeanShell.

Quanto a outra questão, desconheço outro método de se alterar o fundo da célula selecionada.

 

 

Em 12/05/2016 às 20:00, k_dantas disse:

@TianK Usei o código que você postou acima e recebi o seguinte erro ao clicar em qualquer célula:

[...]

Esse erro diz que o LibreOffice tentou chamar a macro "Main", mas a mesma não existe no módulo "Module1" na biblioteca "Standard".

Para contornar o erro é preciso que você refaça os passos que indiquei na minha primeira resposta, certificando-se de seguir a ordem: (a) colar o código no módulo (após criá-lo) e (b) atribuir o evento de planilha "Seleção alterada" a macro "MudarFundo".

 

 

[]s.

TianK

Link para o comentário
Compartilhar em outros sites

Em 15/05/2016 às 11:24, TianK disse:

Façamos o seguinte: você disponibiliza um arquivo de exemplo, com dados com a formatação e o resultado desejado, como fizeram os outros,  e eu vejo o que pode ser feito quanto a adaptar o código. Alterar a cor de fundo da célula selecionada para amarelo é tranquilo, agora "voltar a cor normal" dependerá de como você está pensando em formatar as células.

[]s.

TianK

Olá TianK, estou anexando a planilha que desejo mudar a cor de fundo da célula, conforme for clicada. As únicas células que mudarão a cor de fundo são: B83, E83 e G83, pois eu irei bloquear a planilha com exceção dessas três células. Quando eu clicar na célula B83 para inserir um dado, ela mudará a cor de fundo para amarelo. Quando eu clicar na célula E83, elá mudará a cor de fundo para amarelo e a B83, volta a cor natural. E assim por diante.

Tabela de Atualização Monetária.ods

Link para o comentário
Compartilhar em outros sites

  • 2 anos depois...
  • 7 meses depois...
Em 29/04/2016 às 12:27, TianK disse:

@daniellopes2006,

 

Se o arquivo é novo, é preciso criar um módulo dentro da biblioteca padrão (standard) do mesmo para receber o código:

  1. No menu "Ferramentas" vá em "Macros" > "Organizador de Macros" > "LibreOffice Basic..."
  2. No Diálogo que surgir, selecione o nome do arquivo em "Macro de" e depois o botão "Novo"
  3. Será sugerido "Module1". Renomeei ou deixe como está.
  4. Será aberta a IDE do LibreOffice Basic.

 

Especificamente para o que você quer, é necessário atribuir o código ao evento "Seleção alterada" da planilha:

  1. Aba da Planilha > "Eventos de Planilha..." > Evento "Seleção Alterada" > Botão "Macro"
  2. Em Biblioteca navegue até o "Module1" do arquivo e selecione a macro.
    Sempre que uma nova célula for alterada, o Calc disparará a rotina.

 

Minha sugestão de código:


' Variáveis globais
Global gCol, gLin

Sub MudarFundo( oEv )
' Atribuir ao Evento de Planilha: Seleção alterada
On Error GoTo SairErro

	If Not isEmpty(gCol) Then
	   Call LimparFundoSelecaoAntiga
	End If
	
	oCol = oEv.Columns.getByIndex(0)
	oLin = oEv.Rows.getByIndex(0)
	
	oCol.CellBackColor = RGB( 255,255,0 )
	oLin.CellBackColor = RGB( 255,255,0 )
	
	gCol = oCol
	gLin = oLin

SairErro:
End Sub

Sub LimparFundoSelecaoAntiga
	
	gCol.setPropertyToDefault("CellBackColor")
	gLin.setPropertyToDefault("CellBackColor")

End Sub

 

[]s.

TianK

 

Exemplo_com_macro.ods

Ótima Macro, porém acredito que melhor do que entregar o peixe é ensinar a pescar. Será que você poderia explicar como funciona essa sua macro?

Link para o comentário
Compartilhar em outros sites

  • 2 anos depois...

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...