VBA Excel 2010 – запуск кода при выборе легенды диаграммы

В настоящее время я пытаюсь сделать, я не знаю, возможно ли это, и я даже не знаю, с чего начать (я пробовал этот код, но я не могу заставить его работать).

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

If ActiveChart.SeriesCollection(1).Format.Line.Visible = msoTrue Then ActiveChart.SeriesCollection(1).Format.Line.Visible = msoFalse ElseIf ActiveChart.SeriesCollection(1).Format.Line.Visible = msoFalse Then ActiveChart.SeriesCollection(1).Format.Line.Visible = msoTrue End If 

Если это невозможно, я могу честно понять, почему, но если есть какие-то идеи по работе вокруг, что было бы здорово

Редактировать:

Я сделал небольшую ошибку в том, что я хотел сделать здесь, извините, я бы хотел, чтобы код запускался при нажатии на запись легенды, это текстовая часть легенды рядом с цветной линией (так что строка диаграммы 1, линия диаграммы 1 и т. Д.), Надеюсь, это

Это предполагает, что у вас есть встроенный объект диаграммы в качестве первого объекта диаграммы на первом листе.

В Листе 1 есть следующее: введите описание изображения здесь

Создайте модуль класса. Назовите его clsChartEvents . В этом модуле класса введите следующий код:

 Public WithEvents myChart As Chart Private Sub myChart_MouseDown(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 With myChart .GetChartElement x, y, ElementID, Arg1, Arg2 If ElementID = xlLegendEntry Then If .SeriesCollection(Arg1).Format.Line.Visible = msoTrue Then .SeriesCollection(Arg1).Format.Line.Visible = msoFalse ElseIf .SeriesCollection(Arg1).Format.Line.Visible = msoFalse Then .SeriesCollection(Arg1).Format.Line.Visible = msoTrue End If .ClearToMatchStyle End If End With End Sub 

.GetChartElement x, y, ElementID, Arg1, Arg2 получает ElementID , Arg1 и Arg2 от позиции мыши x, y.

В модуле по умолчанию введите следующий код:

 Dim myChartWithEvents As clsChartEvents Sub init() Set myChartWithEvents = New clsChartEvents Set oChart = ThisWorkbook.Worksheets(1).ChartObjects(1).Chart Set myChartWithEvents.myChart = oChart End Sub 

Теперь запустите sub init и щелкните записи легенды.

Щелчок на записи легенды должен включать / выключать соответствующую строку.

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

Затем вы можете связать этот прямоугольник с вашим макросом. В вашем макросе вы не можете использовать «ActiveChart», но должны идентифицировать правильный график с именем или идентификатором. Надеюсь это поможет.

  • Создание диаграмм с использованием VBA и подпрограмм
  • excel vba для запуска макроса из формулы ячейки
  • Проверить формулу серийной сборки в Excel
  • Поменяйте местами оси x и y без ручной замены значений
  • Скрытие точек данных в линейных диаграммах Excel
  • Программно получить имя источника данных диаграммы
  • VBA - новая диаграмма не добавляет название, легенды или удаление
  • Графики Excel: наложение графика разброса с помощью гистограммы
  • Установите цвета серии диаграмм для соответствия цветам ячейки класса VBA
  • VBA: обновить ячейки для обновления диаграммных осей
  • Групповые данные по неделям, но формат отображения даты
  • Interesting Posts

    Вызовите функцию VBA, которая возвращает пользовательский тип из таблицы

    Использование функции Date VBA, но перед ее форматированием нужно добавить четыре часа.

    График Excel с динамическими рядами на основе значений столбцов

    Чтение C # в метке времени в ячейке excel и проверка наличия ее не более # дня

    JQuery Экспорт таблицы в Excel, когда таблица имеет идентификатор или классы

    Как скопировать все, включая логотип, в рабочую книгу с листа

    Использование хранимой процедуры для экспорта данных в excel в mysql

    Excel: как найти последнее «действительное» значение в строке

    Как умножить столбец в листе CSV из командного файла в Windows

    error Сообщение, полученное с сервера, не может быть проанализировано

    Excel TextToColumns FixedWidth

    Стили ячеек в электронной таблице OpenXML (SpreadsheetML)

    Выбор и очистка содержимого неопределенного диапазона ячеек в новой копии и вставленной таблице

    Разница между последним и первым элементом критериев в списке

    Python xlwt, как НЕ переписать ячейку?

    Давайте будем гением компьютера.