Макрос, чтобы скрыть линию от диаграммы Excel и линию в легенде - PullRequest
0 голосов
/ 15 января 2019

У меня есть макрос, который скрывает линию в моей диаграмме Excel. Проблема, однако, заключается в том, что хотя макрос удаляет линию с диаграммы, он все равно отображается в легенде как пустой.

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

Код:

Sub Macro1()    
    ActiveSheet.ChartObjects("Chart 1").Activate
    ActiveChart.FullSeriesCollection(2).Format.Line.Visible = _
        Not ActiveChart.FullSeriesCollection(2).Format.Line.Visible
End Sub

Проблема с легендой: excel chart

Edit: Кнопки buttons

Ответы [ 2 ]

0 голосов
/ 15 января 2019

Вы можете использовать IsFiltered для этого:

Sub tester()

    Dim cht As Chart

    Set cht = ActiveSheet.ChartObjects(1).Chart

    HideShowSeries cht, "Series1", False 'hide series1
    HideShowSeries cht, "Series1", True  'show series1

    HideShowSeries cht, "", False 'hide all series
    HideShowSeries cht, "", True  'show all series

End Sub

Sub HideShowSeries(cht As Chart, seriesname As String, show As Boolean)
    Dim s As Series
    For Each s In cht.FullSeriesCollection
        If s.Name = seriesname Or seriesname = "" Then
            s.IsFiltered = Not show
        End If
    Next s
End Sub
0 голосов
/ 15 января 2019

Добавьте следующую строку, чтобы удалить серию 2ns из легенды:

ActiveChart.Legend.LegendEntries(2).Delete

Более чистый подход с использованием полностью определенных Объектов без использования ActiveSheet или ActiveChart будет:

Option Explicit

Sub Macro1()

Dim MyCht As ChartObject

' set the chart object
Set MyCht = Worksheets("Sheet1").ChartObjects(1) ' "Chart 1") ' modify the "Sheet1" and "Chart 1" according to your needs

With MyCht
    .Chart.FullSeriesCollection(2).Format.Line.Visible = Not .Chart.FullSeriesCollection(2).Format.Line.Visible

    .Chart.Legend.LegendEntries(2).Delete

End With

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