1. Selection.Cells(1, 1).Value + " - " + ActiveSheet.Name
Избегайте использования +
для объединения. Используйте &
. +
выдаст ошибку, если Selection.Cells(1, 1).Value
является числовым значением c.
2 Points.Count
выдаст ошибку, поскольку она не полностью квалифицирована. Используйте .FullSeriesCollection(1).Points(.FullSeriesCollection(1).Points.Count).ApplyDataLabels Type:=xlShowValue
.
3. Одна маленькая вещь. Чтобы показать метку даты последней точки, используйте .FullSeriesCollection(1).Points(.FullSeriesCollection(1).Points.Count - 1).ApplyDataLabels Type:=xlShowValue
. Подсчет очков основан на 0
. co.Chart.FullSeriesCollection(1).Points.Count
даст вам общее количество очков, которое всегда на 1 меньше, чем вы можете физически считать. Я имею в виду, что подсчет первой точки начинается с 0
4. Аналогично, если вы хотите показать метку данных для 2-й серии, используйте .FullSeriesCollection(2).Points(.FullSeriesCollection(2).Points.Count - 1).ApplyDataLabels Type:=xlShowValue
5. Из чата: Если ваша последняя точка данных не имеет значения, вы не увидите метки данных для нее (очевидно). Поэтому, если вы хотите вернуться назад и показать метку данных для последнего значения, найдите последнюю строку в этом столбце, как показано Здесь , а затем выясните, нужно ли использовать (-1) или (-3) в .FullSeriesCollection(2).Points.Count - 1
чтобы получить желаемый результат.
Вы пытаетесь этого добиться?
Option Explicit
Sub Graph()
Dim my_range As Range, t, co As Shape
Dim OldSheet As Worksheet
Set OldSheet = ActiveSheet
t = Selection.Cells(1, 1).Value & " - " & ActiveSheet.Name
Set my_range = Union(Selection, ActiveSheet.Range("A:A"))
Set co = ActiveSheet.Shapes.AddChart2(201, xlLine) 'add a ChartObject
With co.Chart
.FullSeriesCollection(1).ChartType = xlXYScatter
.FullSeriesCollection(1).AxisGroup = 1
.FullSeriesCollection(1).Points(.FullSeriesCollection(1).Points.Count - 1).ApplyDataLabels Type:=xlShowValue
.FullSeriesCollection(2).ChartType = xlLine
.FullSeriesCollection(2).AxisGroup = 1
.SetSourceData Source:=my_range
'highlight final dot of data
.HasTitle = True
.ChartTitle.Text = t
'ResolveSeriesnames co.Chart
.Location Where:=xlLocationAsObject, Name:="Graphs"
End With
OldSheet.Activate
End Sub