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)
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: