У меня есть график с 5 рядами данных.Я хочу, чтобы все 5 серий отображались на графике, но я хочу, чтобы только 3 из них отображались в легенде.Мне бы хотелось, чтобы записи легенды были удалены на основе названия серии ... "Легендарный диапазон цели" и "Целевой диапазон снизу" следует исключить из легенды.
У меня есть код, который, как мне кажется, должен работать, но я получаю сообщение об ошибке и не могу понять, почему.
Вот код, который я пробовал:
Sub Charts_RemoveLegendEntry()
Dim i As Long
Dim cht As Chart
Dim lgd As Legend
Set cht = ActiveChart
Set lgd = cht.Legend
For i = cht.SeriesCollection.Count To 1 Step -1
Select Case cht.SeriesCollection(i).Name
Case "Target Range Upper", "Target Range Lower"
lgd.LegendEntries(i).Delete
Case Else
' do nothing
End Select
Next
End Sub
Странно, если я поменяю нижнюю часть следующим образом:
Select Case cht.SeriesCollection(i).Name
Case "Target Range Upper", "Target Range Lower"
' do nothing
Case Else
lgd.LegendEntries(i).Delete
End Select
Макрос работает отлично - просто делаю обратное тому, что я хочу.Он избавляется от записей легенды, которые я хочу сохранить, и сохраняет те, которые я хочу удалить.Я не понимаю, почему это не работает в обоих направлениях.
Мне нужно сделать это и для пары других графиков в рабочей книге, но если я смогу разобраться с 1, то смогунастроить для остальных.
* ОБНОВЛЕНИЕ РЕДАКТИРОВАНИЯ
Изменение For i = cht.SeriesCollection.Count To 1 Step -1
на For i = lgd.LegendEntries.Count To 1 Step -1
работало для этого графика.Однако я попытался воссоздать макрос для другого графика на другом листе, и теперь я получаю сообщение об ошибке « Run-time '91': переменная объекта или переменная блока не установлена ».Что мне не хватает?Вот мой второй код для следующего листа ...
Sub Charts_RemoveLegendEntry2()
Dim i As Long
Dim cht As Chart
Dim lgd As Legend
Set cht = ActiveChart
Set lgd = cht.Legend
For i = lgd.LegendEntries.Count To 1 Step -1
Select Case cht.SeriesCollection(i).Name
Case "Total", ""
lgd.LegendEntries(i).Delete
Case Else
' do nothing
End Select
Next
End Sub
Кажется, что он разрывается в строке For i = lgd.LegendEntries.Count To 1 Step -1
.