Как изменить имя легенды сводной диаграммы с помощью VBA - PullRequest
0 голосов
/ 18 апреля 2019

введите описание изображения здесь Я написал код для своего набора данных, чтобы каждый раз, когда я нажимал на кнопку, он переключался на список полей, который я выбрал.Но легенда на моем графике гласит «Всего» вместо названия списка полей.Как изменить название легенды?Я довольно новичок в VBA, кстати.

Спасибо.

ActiveSheet.ChartObjects("Chart 1").Chart.ChartTitle.Text = "2019 Revenue"

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

Sub Add_Value_MasterCode()

Dim pt As PivotTable
Dim pf As PivotField
Dim SField As String

'Set Variable
  Set pt = ActiveSheet.PivotTables(1)
SField = ActiveSheet.Shapes(Application.Caller).TextFrame.Characters.Text


'Remove Existing Fields
For Each pf In pt.DataFields
If pf.Name <> "Values" Then
    pf.Orientation = xlHidden
End If
Next pf

'Add fields that button was clicked for
pt.PivotFields(SField).Orientation = xlDataField

'Set title and color for each fields
If SField = "2016" Then
    ActiveSheet.ChartObjects("Chart 1").Chart.ChartTitle.Text = "2016 Revenue"
    With ActiveSheet.ChartObjects("Chart 1").Chart.FullSeriesCollection(1).Format.Fill
            .Visible = msoTrue
            .ForeColor.ObjectThemeColor = msoThemeColorAccent1
            .ForeColor.TintAndShade = 0
            .ForeColor.Brightness = 0
            .Transparency = 0
            .Solid
    End With
ElseIf SField = "2017" Then
    ActiveSheet.ChartObjects("Chart 1").Chart.ChartTitle.Text = "2017 Revenue"
    With ActiveSheet.ChartObjects("Chart 1").Chart.FullSeriesCollection(1).Format.Fill
            .Visible = msoTrue
            .ForeColor.ObjectThemeColor = msoThemeColorAccent2
            .ForeColor.TintAndShade = 0
            .ForeColor.Brightness = 0
            .Transparency = 0
            .Solid
    End With
ElseIf SField = "2018" Then
    ActiveSheet.ChartObjects("Chart 1").Chart.ChartTitle.Text = "2018 Revenue"
    With ActiveSheet.ChartObjects("chart 1").Chart.FullSeriesCollection(1).Format.Fill
            .Visible = msoTrue
            .ForeColor.ObjectThemeColor = msoThemeColorAccent3
            .ForeColor.TintAndShade = 0
            .ForeColor.Brightness = 0
            .Transparency = 0
            .Solid
    End With
ElseIf SField = "2019" Then
    ActiveSheet.ChartObjects("Chart 1").Chart.ChartTitle.Text = "2019 Revenue"
    With ActiveSheet.ChartObjects("Chart 1").Chart.FullSeriesCollection(1).Format.Fill
            .Visible = msoTrue
            .ForeColor.ObjectThemeColor = msoThemeColorAccent4
            .ForeColor.TintAndShade = 0
            .ForeColor.Brightness = 0
            .Transparency = 0
            .Solid
    End With
End If

End Sub

1 Ответ

0 голосов
/ 18 апреля 2019

Сводные диаграммы кажутся диаграммами с какой-то загадочной связью с сводной таблицей .На основании документов ActiveSheet.ChartObjects("Chart 1").Chart.[FullSeriesCollection](1) возвращает a series object.Вы изменяете легенду для объекта серии, изменяя его Name.Поэтому я думаю, что после ваших заявлений вы хотите:

ActiveSheet.ChartObjects("Chart 1").Chart.[FullSeriesCollection](1).Name = "field list name"

РЕДАКТИРОВАТЬ: я вижу, @jessi добрался там первым.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...