Pergunte aqui
1

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

perguntadas 2016-08-30 00:32:47 +0200

imagem do gravatar de Carlos2

updated 2016-09-06 15:06:40 +0200

imagem do gravatar de Grafeno

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?

editar alterar tag assinalar como ofensivo fechar mesclar Excluir

2 Respostas

3

respondidas 2016-09-01 00:23:13 +0200

imagem do gravatar de Grafeno

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

editar assinalar como ofensivo Excluir Link mais

Comentários

Muito obrigado, Antônio! Resolveu perfeitamente!

imagem do gravatar de Carlos2Carlos2 ( 2016-09-02 17:16:22 +0200 )editar

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.

imagem do gravatar de GrafenoGrafeno ( 2016-09-02 17:37:05 +0200 )editar

Agora, aprendi como funciona. Obrigado.

imagem do gravatar de Carlos2Carlos2 ( 2016-09-05 19:03:32 +0200 )editar

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.

imagem do gravatar de GrafenoGrafeno ( 2016-09-07 14:28:03 +0200 )editar

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?

imagem do gravatar de RegisfreitasRegisfreitas ( 2019-07-11 19:15:27 +0200 )editar

@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".

imagem do gravatar de GrafenoGrafeno ( 2019-07-12 03:24:17 +0200 )editar
1

respondidas 2016-08-30 03:26:06 +0200

imagem do gravatar de sp24horas

updated 2016-09-05 02:56:12 +0200

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: Descrição da imagem

editar assinalar como ofensivo Excluir Link mais

Comentários

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.

imagem do gravatar de Carlos2Carlos2 ( 2016-08-30 17:04:10 +0200 )editar

Não pode conter Botões ?

imagem do gravatar de Gilberto SchiavinattoGilberto Schiavinatto ( 2016-08-31 01:46:39 +0200 )editar

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)

imagem do gravatar de Carlos2Carlos2 ( 2016-08-31 15:16:01 +0200 )editar
Login/Registrar para responder

Ferramentas de perguntas

1 seguidor

Estatísticas

Perguntadas: 2016-08-30 00:32:47 +0200

Lidas: 1,979 vezes

Última atualização: Sep 05 '16