Como executar uma macro no calc ao selecionar em uma célula?

Uma coisa tão simples no Excel não encontro como se faz no Calc.

No Excel:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.Address = "$E$5" Then macro1
End Sub

E no Calc?

Olá,


Associe a macro abaixo ao evento **Seleção Alterada** dos **Eventos de Planilha**:
  • Menu Planilha > Eventos de Planilha… ou
  • Aba da Planilha (botão direito do mouse) > Eventos de Planilha…

Obs.: Note que estes são eventos específicos de cada planilha e não estão listados em Ferramentas > Personalizar > Eventos.


Sub SelecaoAlterada( oCelula )
	' Testar se o objeto selecionado é uma célula individual
	If oCelula.ImplementationName <> "ScCellObj" Then Exit Sub

    If Right(oCelula.AbsoluteName,4) = "$E$5" Then
		'Chamar a macro desejada
		Call Macro1 
    End If	
End Sub

Atte,
Grafeno

Muito obrigado, Antônio! Resolveu perfeitamente!

Que ótimo! Obrigado pelo retorno… mas, então, vc poderia assinar a resposta como correta, clicando no ? Assim contribuímos para o Ask ficar mais organizado.

Agora, aprendi como funciona. Obrigado.

Obrigado pelo voto, mas para manter o Ask mais organizado você deveria marcar (√) a minha resposta. Note que mesmo funcionando para sua questão, ela permanece abaixo de todas. Assim, dificultará para quem estiver pesquisando uma resposta a um problema similar ao seu.

Olá Grafeno, já usei essa sua fórmula e me ajudou e com certeza ajudou muita gente mas agora fui usar novamente e me apareceu um problema. Se eu a uso até a linha 9 funciona corretamente($A$1, $D$8, $E$9 por exemplo) mas se eu uso em qualquer coluna APÓS a linha 9 ele não executa a macro ($A$10, $B$15…) . O problema é comigo ou é algo na fórmula?

@Regisfreitas, a partir da 10ª linha é preciso usar If Right(oCelula.AbsoluteName,5) = "$E$10" Then, com o 5 porque agora temos 5 caracteres em “$E$10” onde haviam 4 em “$E$5”.

EDITADO:NOVA RESPOSTA

Envio novo exemplo de UNO LISTENER (serve para capturar eventos no LibreOffice ).

A resposta anterior era baseada no uso de Listener verificando se o conteúdo da célula foi alterado.

Neste novo exemplo, ele só age quando o usuário clica na célula selecionada com o mouse.

Quando você usa o evento da planilha - seleção alterada, ele entende que uma tabulação ou simples deslocamento com a setinha para a célula já basta para efetuar a macro associada, o que pode ser correto ou não, dependendo do que se quer.

É mais uma alternativa de resolução, penso que correta, porém bastante complexa.

Espero que sirva de estudo para quem pensa em usar UNO Listener em uma macro seja para célula modificada, ou só selecionada no Calc .

Olá!
Você deve fazer uso do UNO Listener.
Associe ao evento correto em Ferramentas/Personalizar da sua planilha.
Tente executar o código da figura.
Boa sorte!
Por exemplo:
Descrição da imagem

Novo código:

Não deu muito certo.

Eu já havia visto algo sobro o UNO Listener, mas em Ferramentas/Personalizar/Eventos não tem o evento específico “Ao Selecionar uma Célula”. Tentei atribuir a Macro ao Evento “Ao ativar o documento”, mas não deu certo. Preciso que, ao clicar em “A1” seja executada uma macro específica, ao clicar em “A2” uma outra macro.

Acho que o caminho pode ser este que você me passou. Mas acho que algo ainda está faltando pra se executar uma macro específica ao se clicar numa célula.

Não pode conter Botões ?

Olá, Gilberto. Esteticamente, botões não seriam bem-vindos nesse projeto. A intenção é que a própria célula, que é rótulo de coluna, seja utilizada como botão, classificando toda a tabela conforme critérios previamente estabelecidos e acrescentando um “↓” no final do texto do rótulo de coluna onde foi clicado para executar a macro. Resumindo, o objetivo seria a possibilidade de classificar um tabela com um simples clique no rótulo de cada uma da coluna que se quer classificar (utilizando macros)