2015-02-13 5 views
0

Есть ли простой способ получить индекс выбранной строки в диаграмме Excel с помощью VBA? У меня есть диаграмма, где пользователь выбирает серию. Затем макрос должен что-то сделать. Я ищу что-то вроде idx = Selection.getIndex.Индекс возврата для выбранной серии

мне нужен этот IDX вызывать другие функции, которые делают некоторые вещи с серией с использованием индекса для выбора конкретной серии (например, FullSeriesCollection(idx).DataLabels.labelPos=...)

ответ

2

Три идей для вас:

1st- использование переменного объекта вместо индекса справки:

Dim SER As Series 
Set SER = Selection 
SER.anyproperty.anymethod... 'do your action here 

2nd- использования того участка, чтобы получить ... индекса (но не уверен, если это всегда совпадают)?

Dim inxSer As Integer 
inxSer = Selection.PlotOrder 

3rd- прочитал последний параметр серии формулы

Dim inxFromFormula As Integer 
Dim tmpSerFormula As String 
tmpSerFormula = Selection.Formula 

tmpSerFormula = Mid(tmpSerFormula, InStrRev(tmpSerFormula, ",") + 1) 
inxFromFormula = Left(tmpSerFormula, Len(tmpSerFormula) - 1) 
+1

Первый вариант здесь, вероятно, самый надежный и самый полезный. –

1

Вы можете использовать объект Chart событий для достижения этой цели. Если диаграмма вложена в листе, вы должны объявить его в качестве переменной «WithEvents» первой, как описано здесь: Using Events with Embedded Charts

После этого вы можете определить обработчик SeriesChange со следующими параметрами:

Private Sub myChartClass_SeriesChange(ByVal SeriesIndex As Long, ByVal PointIndex As Long) 

End Sub 

EDIT : Вышеуказанное событие запускается, когда пользователь меняет значение точки, вместо этого следует использовать Select event.

myChartClass_Select(ByVal ElementID As Long, ByVal Arg1 As Long, ByVal Arg2 As Long) 

Parameter description (the same as BeforeDoubleClick)

+1

У меня есть очень подробный учебник о событиях в Диалоге по адресу http://peltiertech.com/chart-events-microsoft-excel/ –

Смежные вопросы