Войдя в Excel, я выбираю диаграмму, которую хочу отредактировать, а затем выбираю все метки, перейдя в Инструменты диаграммы> Добавить элемент диаграммы> Метки данных> Дополнительные параметры меток данных.
![введите здесь описание изображения](https://i.stack.imgur.com/q3iFH.png)
Затем я снимаю флажки с тех опций, которые мне не нужны в своих ярлыках, и отмечаю те, которые мне нужны, в разделе «Параметры ярлыков» в только что открытом диалоговом окне.
![введите здесь описание изображения](https://i.stack.imgur.com/s7l4e.png)
Это отлично работает для меня, но если это не для вас или вы по какой-либо другой причине хотите редактировать метки через VBA, этот фрагмент скрипта устанавливает метки данной диаграммы на имя серии:
Option Explicit
Sub Macro1()
With ThisWorkbook.Worksheets("Grafar, utvikling").ChartObjects("Graf3").Chart.FullSeriesCollection(2)
If Not .HasDataLabels Then
.ApplyDataLabels
End If
If Not .DataLabels.ShowSeriesName Then
.DataLabels.ShowSeriesName = True
End If
End With
End Sub
Ясно, что вам нужно переключить имена рабочих листов, имя диаграммы и т. Д. На то, что у вас есть на диаграмме - это не должно быть очень сложно понять, но если у вас возникнут проблемы, не стесняйтесь прокомментировать вопрос, если у вас есть какие-то проблемы.
Я создал макрос с помощью регистратора макросов, а затем отредактировал результаты, он часто может стать хорошей отправной точкой для любой задачи, которую вы пытаетесь выполнить. По моему опыту, таким способом легче определить имена / структуры объектов в Excel-VBA, чем пытаться понять это с нуля.
Учитывая, что приведенное выше не делает то, что вы хотите, я подозреваю, что каждый столбец в вашей диаграмме представляет собой одну серию. Чтобы быстро отобразить SeriesName
для каждого набора данных на диаграмме, попробуйте перебрать все серии на диаграмме:
Sub Macro1()
Dim se As Series
For Each se In ThisWorkbook.Worksheets("Grafar, utvikling").ChartObjects("Graf3").Chart.SeriesCollection
If Not se.HasDataLabels Then
se.ApplyDataLabels
End If
If Not se.DataLabels.ShowSeriesName Then
se.DataLabels.ShowSeriesName = True
End If
If se.DataLabels.ShowValue Then
se.DataLabels.ShowValue = False
End If
Next se
End Sub
person
eirikdaude
schedule
07.03.2016