Выполнить Sub, когда выбран случайный график

У меня есть кнопка ActiveX, которая создает ежемесячные графики из журналов данных, которые меняются ежедневно. Когда вы выбираете диаграмму из определенного месяца, я хочу отображать минимальные, максимальные и средние значения диаграммы в ячейках B1-B3.

Я предполагаю, что это довольно просто, если у вас есть фиксированная диаграмма, такая как «диаграмма1», но пользователь может создать любое количество диаграмм на нескольких разных листах, поэтому я не знаю заранее, какие диаграммы даже доступны.

Есть ли способ создать общий прослушиватель chart_Activate, который может вызывать подпрограмму и отправлять ему значения y диаграммы при активации любой диаграммы?

Что-то типа

Sub Chart_Activate() 
    yValues = <some property obtained from this listener>
    Call findMinMaxAvg(ByVal yValues) 
End Sub

person jonutt7    schedule 22.07.2019    source источник


Ответы (1)


Вы можете назначить общую подпрограмму для свойства OnAction каждой диаграммы — назовите свои диаграммы, чтобы подпрограмма могла извлекать необходимую информацию через Application.Caller.

Sub ShowInfo()
    Debug.Print Application.Caller
End Sub
person Tim Williams    schedule 22.07.2019
comment
Спасибо, это сработало для получения минимальных, средних и максимальных значений из диаграммы, но теперь я столкнулся с другой проблемой. Я не могу активировать диаграмму с установленным свойством OnAction. Я думал о том, чтобы установить его в ничего после выполнения макроса, но тогда vals не всегда будут коррелировать с текущей диаграммой (предположим, вы выбираете диаграмму 1, затем диаграмму 2, а затем возвращаетесь к диаграмме 1 - vals для диаграммы 2). Любые идеи? - person jonutt7; 25.07.2019
comment
Зачем нужно активировать график? Вы можете обновить свой вопрос, чтобы добавить свой текущий код, если это поможет объяснить. - person Tim Williams; 25.07.2019