Chart Event (Double Click on Chart)

Vishesh's picture

The example file attached shows how to create events for charts. Here, I have created double click event for charts. The chart which is double-clicked is exported to PowerPoint. Download the example file and have a look for yourself. See the code in Thisworkbook and mod_PPT module. 

 

Chart Event
AttachmentSize
ChartEvents.xls47 KB

What if the chart is created after the workbook is open?

Hello and thanx for your post. It helped me alot.
But how do I do it if I create the chart after the workbook is opened?
In your example you set Cht1 = Sheet1Chart.... .Chart in the Workbook_Open Sub.

How do i do it in a module sub?

'Code to create chart
'Code to attach this chart to a event?

Vishesh's picture

Refer to this

Refer to this url
http://excelexperts.com/Classes-Single-event-for-multiple-labels

You need to uses classes.

Or, run a code that assigns the macro to a chart/shape.

I did like this and it

I did like this and it assigns the proper Macro to the shape on the chart.
But what do I need to do with the chart/shape to activate it?

Sub addtmpchart()
Dim GCShape As shape
Dim GCChart As Chart
Dim name As String

ActiveSheet.Shapes.AddChart.Select
Set GCChart = ActiveSheet.ChartObjects(1).Chart
name = GCChart.name
name = Right(name, 7)

Set GCShape = ActiveSheet.Shapes(name)
GCShape.OnAction = "'" & ActiveWorkbook.name & "'!popMsgBox"
End Sub

Sub popMsgBox()
MsgBos "YEEAAH"
End Sub

If you write the correct name

If you write the correct name of the macro, just click the chart. :)

I tried to assign a macro to

I tried to assign a macro to the chart but cant find out how to do it.

For a shape you can write:
Dim MyShape As Shape
Set MyShape = ActiveSheet.Shapes.AddShape(msoShapeRectangle, 10, 10, 10, 10)
MyShape.Onaction = "'" & activeworkbook.name & "'!macro_name"

But the Chart object does not have the function named "OnAction". How do i do it?
Or can I refer to a shape inside the Chart somehow? (Dont now if charts consists of shapes)

Or do I need to use classes?
Thank you.