Я пытаюсь заставить макрос работать с диаграммой на листе, используя Диаграмму.Событие BeforeDoubleClick.
Мне удалось использовать событие BeforeDoubleClick (без использования модулей классов) в отдельном графике. Но я бы хотел, чтобы он работал в диаграмме, встроенной как объект в лист. Идея состоит в том, чтобы затем повторить это для нескольких диаграмм в пределах одного рабочего листа.
Следуя совету в этой книге (стр. 172-3), я сделал следующее:
Создана новая рабочая тетрадь. В лист Sheet1 добавлено 2 столбца случайных данных и добавлена диаграмма рассеяния на том же листе рядом с данными.
Вставлен модуль класса с именем "cl_ChartEvents" с кодом:
Public WithEvents myChartClass As Chart
Создан стандартный модуль с кодом:
Dim myClassModule As New cl_ChartEvents Sub InitializeChart() Set myClassModule.myChartClass = _ Worksheets("Sheet1").ChartObjects(1).Chart End Sub
В редакторе VBA дважды щелкните объект «Sheet1 (Sheet1)» и вставьте код:
Private Sub MyChartClass_BeforeDoubleClick(ByVal ElementID As Long, _ ByVal Arg1 As Long, ByVal Arg2 As Long, Cancel As Boolean) Select Case ElementID Case xlLegend Me.HasLegend = False Cancel = True Case xlAxis Me.HasLegend = True Cancel = True End Select End Sub
Нажмите Run и запустите макрос InitializeChart.
Когда я дважды щелкаю легенду на диаграмме, ничего не происходит, и Excel просто открывает окно свойств Легенда формата, как обычно.
Я сделал свою домашнюю работу онлайн, просматривая форумы и т.д., Но не смог найти другого намека на то, как можно реализовать событие BeforeDoubleClick для работы с диаграммой в обычном рабочем листе. Подход в книге, кажется, указывает, что это выполнимо все же.
Любая помощь будет оценена! Заставить это работать помогло бы многим другим с подобными вопросами, которые я видел в сети. Спасибо.