Удаление пустой серии из графика (с VBA) - PullRequest
2 голосов
/ 24 октября 2011

Я пытаюсь удалить все пустые серии из графа Excel.

    Dim isEmptySeries As Boolean
    For Series = 1 To .SeriesCollection.count
        .SeriesCollection(Series).ApplyDataLabels Type:=xlDataLabelsShowValue, AutoText:=True, LegendKey:=False
        isEmptySeries = True

        For i = 1 To .SeriesCollection(Series).points.count
            If .SeriesCollection(Series).points(i).DataLabel.Text = 0 Then
                .SeriesCollection(Series).points(i).HasDataLabel = False
            Else
                isEmptySeries = False
                .SeriesCollection(Series).points(i).DataLabel.Font.Size = 17
            End If
        Next i

        If isEmptySeries Then
                .SeriesCollection(Series).Delete
        End If
    Next Datenreihe

Сценарий завершается ошибкой в ​​строке ApplyDatalabels («Метод SeriesCollection объектной диаграммы не удался»). Я полагаю, что Excel сдвигает индексы серии, когда одна из серий удаляется? Это тот случай? Это единственное объяснение этой ошибки, которое у меня есть.

Как еще я могу пройтись по сериям и удалить те, которые пусты?

1 Ответ

5 голосов
/ 25 октября 2011

В подобных ситуациях попробуйте выполнить цикл в обратном порядке

For i = .SeriesCollection(Series).points.count To 1 Step -1

Таким образом, .Delete не влияет на элемент, который еще предстоит пройти через

...