2015-07-21 5 views
3

У меня есть серия диаграмм, которые я создаю с помощью VBA (код ниже).Как изменить название серии в VBA

У меня возникли проблемы с изменением названий серий из серии 1 и серии 2 в текущее состояние и состояние решения.

Я постоянно получаю

Переменная объекта или с блока переменной не установлено

ошибку.

Однако без srs1 и srs2 код работает очень хорошо (только с неправильными названиями серий).

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

Sub MA() 
    Dim Srs1 As Series 
    Dim Srs2 As Series 
    Dim i As Integer 
    Dim MAChart As Chart 
    Dim f As Integer 
    f = 2 * Cells(2, 14) 
    For i = 1 To f Step 2 
     Set MAChart = ActiveSheet.Shapes.AddChart(Left:=750, Width:=400, Top:=130 + 50 * (i - 1), Height:=100).Chart 
     With MAChart 
     .PlotBy = xlRows 
     .ChartType = xlColumnClustered 
     .SetSourceData Source:=ActiveSheet.Range("Q" & 1 + i & ":Z" & 2 + i) 
     .Axes(xlValue).MaximumScale = 4 
     .Axes(xlValue).MinimumScale = 0 
     .HasTitle = True 
     .ChartTitle.Text = "Provider Load for " & Cells(i + 1, 15) 
     'where errors start- works fine up to this point 
     Set Srs1 = ActiveChart.SeriesCollection(1) 
     Srs1.Name = "Current State" 
     Set Srs2 = ActiveChart.SeriesCollection(2) 
     Srs2.Name = "Proposed Solution" 
     End With 
    Next i 
End Sub 
+0

Нет активной диаграммы. Используйте 'Set Srs1 = .SeriesCollection (1)' и т. Д. –

ответ

6

Попробуйте изменить эти строки ...

 Set Srs1 = ActiveChart.SeriesCollection(1) 
    Srs1.Name = "Current State" 
    Set Srs2 = ActiveChart.SeriesCollection(2) 
    Srs2.Name = "Proposed Solution" 

К ...

 .SeriesCollection(1).Name = "Current State" 
    .SeriesCollection(2).Name = "Proposed Solution" 

Вы уже используете MAChart внутри твоего блока, так что вы должны быть в состоянии получить доступ к его .SeriesCollection(x).Name свойства так же, как и для других свойств.

2

Я считаю, что проблема с реферированием - в коде вы ссылаетесь ActiveChart (я предполагаю, что это не существует), в то время как вы создали Machart в коде выше.

Set Srs1 = MAChart.SeriesCollection(1) 
Srs1.Name = "Current State" 
Set Srs2 = MAChart.SeriesCollection(2) 
Srs2.Name = "Proposed Solution" 
+1

Или просто 'Set Srs1 = .SeriesCollection (1)' и т. Д. –

Смежные вопросы