Efeito Trocar Gráfico ao Passar o Mouse no Excel

Neste artigo você aprenderá como realizar um efeito no Excel que ao passar o mouse troque os gráficos.

MouseMove Excel VBA Exemplo

O evento MouseMove tem por finalidade efetuar uma ação quando o mouse é movido sobre algum determinado objeto.

No nosso caso o objeto que inserimos no Excel foi um objeto do tipo Rótulo, ou TextBox.

Para isso primeiro clique na guia Desenvolvedor (Como habilitar a guia desenvolvedor)

Trocar o gráfico ao passar o mouse excel 1

Clicando sobre o objeto acima desenhe ele sobre uma parte que deseja que ao passar o mouse ele mude o gráfico.

No nosso exemplo colocamos isso sobre os meses como temos abaixo e sobre as imagens de gráfico de linhas e gráfico de barras.

Cada um destes objetos irá executar um código VBA diferente.

Clique em Propriedades e mude o nome de cada objeto como por exemplo criamos lblComparacao, lblMesAnterior e lblMesAtual.

Após isso clique sobre o objeto criado clicando duas vezes e coloque o seguinte código abaixo, eles serão executados ao passar o mouse sobre os objetos.

Private Sub lblComparacao_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
    lsComparacao
End Sub

Private Sub lblMesAnterior_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
    lsMesAnterior
End Sub

Private Sub lblMesAtual_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
    lsMesAtual
End Sub

Preparar os Gráficos

No exemplo deste artigo temos a comparação de vendas diárias do mês anterior e novo, comparando os meses e indicando a diferença entre eles.

O objetivo é mostrar estes dados diários dia-a-dia comparando as informações em gráficos de linha ou barras, comparando ou apenas exibindo um dos meses.

Após isso crie os gráficos para cada uma das situações e sobreponha-os.

Sobre cada gráfico clique e mude o nome deles, clicando na guia Desenvolvedor e no botão Propriedades, nele mude a propriedade Name, conforme o gráfico que desejar.

Mude estes nomes nos códigos que criamos no Código VBA na próxima sessão do artigo.

Código VBA para Mudar o Gráfico

Em seguida clique na guia Desenvolvedor e no botão Visual Basic.

Em seguida clique em Inserir->Módulo e no módulo criado.

Global lstrTipo         As String
Global lstrSelecionado  As String

Sub lsComparacao()
    If lstrTipo = "" Then
        ActiveSheet.Shapes.Range(Array("mesatual")).Visible = msoFalse
        ActiveSheet.Shapes.Range(Array("mesanterior")).Visible = msoFalse
        ActiveSheet.Shapes.Range(Array("comparacao")).Visible = msoTrue
        ActiveSheet.Shapes.Range(Array("mesatual2")).Visible = msoFalse
        ActiveSheet.Shapes.Range(Array("mesanterior2")).Visible = msoFalse
        ActiveSheet.Shapes.Range(Array("comparacao2")).Visible = msoFalse
    Else
        ActiveSheet.Shapes.Range(Array("mesatual")).Visible = msoFalse
        ActiveSheet.Shapes.Range(Array("mesanterior")).Visible = msoFalse
        ActiveSheet.Shapes.Range(Array("comparacao")).Visible = msoFalse
        ActiveSheet.Shapes.Range(Array("mesatual2")).Visible = msoFalse
        ActiveSheet.Shapes.Range(Array("mesanterior2")).Visible = msoFalse
        ActiveSheet.Shapes.Range(Array("comparacao2")).Visible = msoTrue
    End If
    
    lstrSelecionado = "Comparacao"
End Sub

Sub lsMesAtual()
    If lstrTipo = "" Then
        ActiveSheet.Shapes.Range(Array("mesatual")).Visible = msoTrue
        ActiveSheet.Shapes.Range(Array("mesanterior")).Visible = msoFalse
        ActiveSheet.Shapes.Range(Array("comparacao")).Visible = msoFalse
        ActiveSheet.Shapes.Range(Array("mesatual2")).Visible = msoFalse
        ActiveSheet.Shapes.Range(Array("mesanterior2")).Visible = msoFalse
        ActiveSheet.Shapes.Range(Array("comparacao2")).Visible = msoFalse
    Else
        ActiveSheet.Shapes.Range(Array("mesatual")).Visible = msoFalse
        ActiveSheet.Shapes.Range(Array("mesanterior")).Visible = msoFalse
        ActiveSheet.Shapes.Range(Array("comparacao")).Visible = msoFalse
        ActiveSheet.Shapes.Range(Array("mesatual2")).Visible = msoTrue
        ActiveSheet.Shapes.Range(Array("mesanterior2")).Visible = msoFalse
        ActiveSheet.Shapes.Range(Array("comparacao2")).Visible = msoFalse
    End If
    
    lstrSelecionado = "Atual"
End Sub

Sub lsMesAnterior()
    If lstrTipo = "" Then
        ActiveSheet.Shapes.Range(Array("mesatual")).Visible = msoFalse
        ActiveSheet.Shapes.Range(Array("mesanterior")).Visible = msoTrue
        ActiveSheet.Shapes.Range(Array("comparacao")).Visible = msoFalse
        ActiveSheet.Shapes.Range(Array("mesatual2")).Visible = msoFalse
        ActiveSheet.Shapes.Range(Array("mesanterior2")).Visible = msoFalse
        ActiveSheet.Shapes.Range(Array("comparacao2")).Visible = msoFalse
    Else
        ActiveSheet.Shapes.Range(Array("mesatual")).Visible = msoFalse
        ActiveSheet.Shapes.Range(Array("mesanterior")).Visible = msoFalse
        ActiveSheet.Shapes.Range(Array("comparacao")).Visible = msoFalse
        ActiveSheet.Shapes.Range(Array("mesatual2")).Visible = msoFalse
        ActiveSheet.Shapes.Range(Array("mesanterior2")).Visible = msoTrue
        ActiveSheet.Shapes.Range(Array("comparacao2")).Visible = msoFalse
    End If
    
    lstrSelecionado = "Anterior"
End Sub

Public Sub lsBarras()
    'Muda o tipo para barras
    lstrTipo = "barras"
    
    'Seleciona o gráfico
    If lstrSelecionado = "Comparacao" Then
        lsComparacao
    Else
        If lstrSelecionado = "Atual" Then
            lsMesAtual
        Else
            lsMesAnterior
        End If
    End If
End Sub

Public Sub lsLinhas()
    'Muda o tipo para barras
    lstrTipo = ""
    
    'Seleciona o gráfico
    If lstrSelecionado = "Comparacao" Then
        lsComparacao
    Else
        If lstrSelecionado = "Atual" Then
            lsMesAtual
        Else
            lsMesAnterior
        End If
    End If
End Sub

Explicando o Efeito Trocar o Gráfico ao Passar o Mouse no Excel

Por fim temos então o seguinte efeito, que faz com que os códigos sejam acionados ao passar o mouse sobre os objetos de Rótulo inseridos.

Cada um deles oculta os gráficos anteriores deixando exibido apenas o gráfico relativo aquele rótulo.

Esse código pode também ser adaptados para outras situações que queira que ocorra algo ao passar o mouse, como por exemplo criar caixas de explicação ou mostrar imagens.

Download Planilha Efeito Trocar Gráfico ao Passar o Mouse no Excel

Clique no botão abaixo para realizar o  download do Excel de exemplo:

Baixe a planilha

Avalie este post
Sair da versão mobile