вот в чем проблема, когда код запускается в первый раз, он работает.
однако, так как вы удалили записи легенды,
количество записей легенды больше не соответствует количеству коллекций серий.
вот изображение, скажем, название для серии 2 пустое,
до первого запуска ...
series blank legend
1 n 1
2 y 2
3 n 3
4 n 4
после первого запуска, так как легенда 2 была удалена, 3 теперь становится 2.
series blank legend
1 n 1
2 y 2
3 n 3
4 n
при следующем запуске удаляется исходная легенда 3, теперь 2, и так далее ...
series blank legend
1 n 1
2 y 2
3 n
4 n
вместо удаления легенды
вы можете использовать свойство IsFiltered
для серии.
если IsFiltered
истинно, строка и легенда будут скрыты, но не удалены.
и может быть показано позже, если имя добавляется обратно ...
см. Следующий фрагмент ...
Sub LegendRemover()
Dim chtob As ChartObject
Dim seriesLine As series
Set chtob = ActiveSheet.ChartObjects("Chart 8")
For Each seriesLine In chtob.Chart.SeriesCollection
seriesLine.IsFiltered = (seriesLine.Name = "")
Next seriesLine
End Sub