Excel Vba

Criando evento MouseDown para Grafico Excel

O Excel VBA possui vários eventos que podem ser utilizado pelo usuário, mas em determinadas situações não atende a necessidade especificas, nessa postagem vou demonstrar como estender eventos para gráficos.

1) Entre no VBA depois em clique em Inserir>Módulo de classe.

2) Click no módulo para seleciona-lo depois nas Propriedades do módulo altere o nome para ChartEventCls.

3) Ao final o resultado deve ser como a a imagem abaixo.

De um duplo click no módulo de classe, copie e cole o código abaixo.

Option Explicit

Public WithEvents clsCht As Chart

Private Sub clsCht_MouseDown(ByVal Button As Long, _
                            ByVal Shift As Long, _
                            ByVal x As Long, _
                            ByVal y As Long)
    
    Dim strTexto As String
    
    Select Case Shift
        Case 0
        Case 1: strTexto = "Shift + "
        Case 2: strTexto = "Ctrl + "
        Case 4: strTexto = "Alt + "
    End Select
    
    Select Case Button
        Case xlPrimaryButton: strTexto = strTexto & "botão esquerdo"
        Case xlSecondaryButton: strTexto = strTexto & "botão direito"
    End Select
    
    strTexto = strTexto & vbCrLf
    strTexto = strTexto & "Posição X:=" & x & " Posição Y:=" & y
    MsgBox strTexto

End Sub

Pronto!!! Já criamos esse evento para todos os gráficos, mas agora vamos precisar inicializar esse evento para que comece a ser utilizado, para isso vamos criar uma rotina em um módulo.

1) Entre no VBA depois em Inserir>Módulo

2) Ao final o resultado deve ser como a a imagem abaixo.

De um duplo click no módulo, copie e cole o código abaixo.

Option Explicit

'Criando variavel de objeto para evento
Dim objChtCls As New ChartEventCls

'Inicialiando o evento
Sub InitializeChartEvent()
    Set objChtCls.clsCht = Worksheets(1).ChartObjects(1).Chart
End Sub

'Finalizando o evento
Sub finalizeCharEvent()
    Set objChtCls.clsCht = Nothing
End Sub

Nesse exemplo mostrei como dar o start manualmente por uma rotina, mas nada impede a execução por um evento padrão tipo open.

Clique aqui para baixar o arquivo desse passo a passo.

5 comentários sobre “Criando evento MouseDown para Grafico Excel

Deixe uma resposta