[Excel] Mudar células ao passar o mouse. MouseHover
O Excel é mesmo surpreendente. Neste artigo é demonstrada uma técnica simples, de executar mudanças em células ao passar o mouse, semelhante ao evento MouseHover. Veja mais artigos em https://www.guiadoexcel.com.br
A ideia original foi desenvolvida pelo MVP Jordan Goldmeier e descrita no canal Mr. Excel do MVP Bill Jellen em: https://youtu.be/04yl-dv68Qw. Este vídeo é de 2013 e solicitei permissão para divulgar no Guia do Excel a técnica e divulgar o seu conteúdo em português, então aqui estamos.
Veja o GIF abaixo, ele demonstra exatamente o que você aprenderá a fazer assistindo o vídeo no topo deste artigo, seguindo o tutorial ou ainda fazendo o download da planilha ao final do artigo.
Como você pode notar, ao passar com o mouse sobre as células do Excel o sistema altera o conteúdo da lista á direita, exibindo apenas os itens que fazem parte de uma determinada categoria.
O interessante é exatamente que este evento não existe no Excel por padrão, o evento MouseHover.
Para implementar este evento há outras formas, mas neste artigo demonstraremos a forma mais simples e prática de se simular este evento.
Funcionalidades Mouse sobre Excel
Este evento é VBA e permite que seja executada qualquer procedimento ao passar com o mouse sobre determinadas células.
Além disso, a técnica permite que sejam passados parâmetros pelo evento de passar o mouse sobre, abrindo inúmeras possibilidades de uso.
No exemplo demonstrado pelo MVP Jordan Goldmeier, a ideia é parecida com a nossa lista simples, mas no caso ele filtra os elementos de uma tabela periódica.
Esta planilha pode ser baixada no link disponibilizado no vídeo do MVP Bill Jellen, disponibilizado no topo deste artigo.
Outro exemplo de aplicação desta técnica é na alteração de dados em gráficos, infográficos ou dashboards. Veja um exemplo.
Perceba que são células, apesar de parecerem botões ou formas, e os eventos são disparados, como no exemplo anterior pelo evento de ao passar o mouse sobre.
Acredito que a esta altura você já deva estar convencido de que a técnica lhe possa ser útil, portanto, vamos ver agora como aplicá-la.
Passo-a-passo simulação do evento MouseHover no Excel
Para o nosso exemplo, nós faremos com que os dados do gráfico sejam alterados dinamicamente ao passar o mouse sobre as células.
O conteúdo desta célula será enviado para outra célula definida por parâmetro na própria célula e as fórmulas que usam esta célula destino como parâmetro serão afetadas.
Para isso siga os seguintes passos:
- Crie uma tabela com os dados que poderão ser utilizados no gráfico, no exemplo temos os meses e as sucursais de uma empresa. A coluna em amarelo é a coluna que recebe a fórmula desloc, descrita na etapa 2.
- Na coluna em amarelo da imagem acima, digitamos a fórmula: =DESLOC(I3;0;CORRESP($N$2;$J$2:$M$2;0);1;1). Esta fórmula irá exibir o conteúdo da coluna que estiver descrita no topo, como a coluna descrita no topo é Paraguai ela desloca o conteúdo da célula de origem, no caso I3 em 4 colunas e exibe o conteúdo desta célula. Veja a função DESLOC no nosso artigo: Aprenda a função DESLOC de uma vez por todas
- Selecione a coluna Sucursal/Mês e a última coluna e pressione as teclas ALT+F1, o Excel irá criar automaticamente um gráfico com estas informações.
- Altere o conteúdo da célula do topo da última coluna para Paraná e veja como o gráfico é alterado automaticamente. O grande truque é agora, mudar o conteúdo da célula de acordo com outra.
- Pressione as teclas ALT+F11 para abrir o Editor do Visual Basic.
- Localize a sua planilha na árvore á esquerda e na pasta módulos clique com o botão direito e selecione Inserir->Módulo.
- Neste módulo digite o seguinte código:
Public Function lfPreencher(ByVal lNome As String, ByVal lDestino As String) As String ActiveSheet.Range(lDestino) = lNome End Function
Este código é uma função do Excel, isso mesmo, uma função, e ela irá alterar o conteúdo da célula.
A função recebe dois parâmetros, lNome, que é o conteúdo da célula que será preenchida, e lDestino que é a célula que será preenchida, lembrando que isso é apenas um exemplo.
As UDF, funções definidas pelo usuário, não podem alterar conteúdos de outras células, mudar formatações, ou outras tarefas que você colocaria em uma SUB no VBA, mas, com esta técnica você consegue fazer qualquer modificação no Excel, assim como em um procedimento.
- Volte para o Excel fechando o Editor do Visual Basic.
- Na célula B2, aonde queremos que seja passado o mouse sobre e seja preenchido a célula da tabela com o nome coloque a função seguinte: =SEERRO(HIPERLINK(lfPreencher(J2;”N2″);J2);J2), coloquei em negrito e em vermelho porque o grande truque está aqui.
O Hiperlink é uma função do Excel que ao passar o mouse sobre ela, o ponteiro do mesmo muda automaticamente para a “mãozinha”, que é o ícone padrão de seguir o link.
Para que a nossa função funcione, nós colocamos dentro da função Hiperlink a chamada da função lfPreencher, somente isso, e o SEERRO para evitar que exiba um erro ao executar. Veja o cenário para entender a função.
Agora você consegue ver que na função, é passado J2=”São paulo”, como primeiro parâmetro da função lfPreencher, ou seja, este é o conteúdo que será passado para a célula, que é o segundo parâmetro, a célula N2, que já vemos preenchida com São Paulo também.
A função Hiperlink recebe esta função como primeiro parâmetro, ou seja, link a ser seguido, e no segundo a célula J2, que é o conteúdo da célula São Paulo na lista de dados.
Para concluir, veja que a SEERRO recebe J2 também, ou seja, São Paulo, para evitar que ela fique com erro ao dar o Enter.
Por fim, acredito que o uso deste evento de ao mover o mouse executar uma ação no Excel poderá lhe abrir várias possibilidades e espero que lhe ajude na sua vida profissional. Veja mais artigos sobre VBA: Guia do Excel VBA
Baixe a planilhaAbraço
Marcos Rieper
Curso Excel Completo – Do Básico ao VBA
Quer aprender Excel do Básico, passando pela Avançado e chegando no VBA? Clique na imagem abaixo: