Получить название диаграммы от ChartObjects - PullRequest
0 голосов
/ 02 апреля 2019

Я хочу иметь возможность идентифицировать диаграмму по ее названию (или другому имени, отличному от имени по умолчанию).Здесь я пытаюсь удалить его, если у него есть определенный заголовок:

Sub delchart()

Call create_chart
Dim d

For Each d In Worksheets("sheet1").ChartObjects

    Debug.Print d.Name '<-not a usable name

    If d.ChartTitle = "Scatter Chart" Then '<- errors
        d.Delete
    End If
Next d
End Sub

Вот как я создаю диаграмму:

Sub create_chart()


    Dim sh As Worksheet
    Dim chrt As Chart

    Set sh = ActiveWorkbook.Worksheets("Sheet1")
    Set chrt = sh.Shapes.AddChart.Chart
    With chrt
        'Data?
        .ChartType = xlXYScatter
        .SeriesCollection.NewSeries
        .SeriesCollection(1).Name = "=""Scatter Chart"""
        .SeriesCollection(1).XValues = "=Sheet1!$A$2:$A$11"
        .SeriesCollection(1).Values = "=Sheet1!$B$2:$B$11"

        'Titles
        .HasTitle = True
        .ChartTitle.Characters.Text = "Scatter Chart"
        .Axes(xlCategory, xlPrimary).HasTitle = True
        .Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "X values"
        .Axes(xlValue, xlPrimary).HasTitle = True
        .Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "Y values"
        .Axes(xlCategory).HasMajorGridlines = True

        'Formatting
        .Axes(xlCategory).HasMinorGridlines = False
        .Axes(xlValue).HasMajorGridlines = True
        .Axes(xlValue).HasMinorGridlines = False
        .HasLegend = False
        .Location Where:=xlLocationAsObject, Name:="Sheet1"
        '.Name = "my scatter 1"
    End With

End Sub

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

1 Ответ

1 голос
/ 02 апреля 2019

Вы можете получить доступ к тексту ChartTitle следующим образом:

Sub delchart()

Call create_chart
Dim d

For Each d In Worksheets("sheet1").ChartObjects

    Debug.Print d.Name '<-not a usable name

    If d.Chart.ChartTitle.Caption = "Scatter Chart" Then
        d.Delete
    End If
Next d

End Sub
...