图表事件 – 值不被代码拾取超过一系列数据

我试图build立一个交互式的图表来表示一组数据。 在下面的截图中,如果我们select不同的button,我们可以为图表select不同的数据系列。 我的问题是,通过使用下面的代码如果系列1是真的只有那么我能够得到myX和myY的值…其他系列select我只得到空白。

在这里输入图像说明

Private Sub Chart_MouseUp(ByVal Button As Long, ByVal Shift As Long, _ ByVal x As Long, ByVal y As Long) Dim ElementID As Long, Arg1 As Long, Arg2 As Long Dim myX As Variant, myY As Double With ActiveChart .GetChartElement x, y, ElementID, Arg1, Arg2 ' Did we click over a point or data label? If ElementID = xlSeries Or ElementID = xlDataLabel Then On Error Resume Next If Arg2 > 0 Then ' Extract x value from array of x values myX = WorksheetFunction.Index(.SeriesCollection(Arg1).XValues, Arg2) ' Extract y value from array of y values myY = WorksheetFunction.Index _ (.SeriesCollection(Arg1).Values, Arg2) MsgBox myX & ", " & myY 

基本上是线路

  myX = WorksheetFunction.Index(.SeriesCollection(Arg1).XValues, Arg2) 

抛出错误如果select了系列2或3,则参数无效。 如果select系列1,则可以正常工作。

myX给我点击的国家和myY的名称值。

video链接,看看这个Excel文件中发生了什么。

图表模板videoYoutube

傻,但如果我们使用FullSeriesCollection而不是SeriesCollection它的作品。

所以,而不是线路

 myX = WorksheetFunction.Index(.SeriesCollection(Arg1).XValues, Arg2) 

我必须使用:

 myX = WorksheetFunction.Index(.FullSeriesCollection(Arg1).XValues, Arg2) 

解释似乎由FullSeriesCollection的文档FullSeriesCollection

FullSeriesCollection对象(Excel)对象使您能够筛选出Series对象(Excel)对象,并将其过滤回来。它还使您能够以编程方式遍历整个Series对象集,过滤出或可见对象。 通过使现有的SeriesCollection对象(Excel)对象仅包含可见的系列,您可以以编程方式仅对可见的系列执行操作。 它还可以防止Microsoft Excel在筛选出的数据中破坏图表上的现有图表解决scheme。