Здесь есть пара неправильных вещей.
Прежде всего, вы всегда смотрите одну и ту же серию!Я думаю, что вы хотите заменить Count
на a
в вашем If
утверждении.
If ActiveChart.SeriesCollection(a).Name
Во-вторых, если это исправить, даже если в какой-то момент ваша переменная Name
будет установлена на True
, она может быть сброшена до False
позже, поскольку цикл For...Next
продолжает повторятьсячерез оставшуюся часть серии коллекции.Чтобы предотвратить это, добавьте Exit For
следующим образом:
For a = 1 To Count
If ActiveChart.SeriesCollection(a).Name = Range("A2").Value Then
Name = True
Exit For
End If
a = a + 1
Next
Кроме того, я подозреваю, что вы не объявили Name
в качестве логической переменной, поэтому по умолчанию это Variant, поэтому его значение неFalse
для начала!Вы должны объявить переменную в начале вашей процедуры с помощью Dim Name as Boolean
, а затем, если вы хотите, чтобы Name
был по умолчанию False
, вы должны прямо сказать об этом явно: поставьте Name = False
перед циклом.Более того, Name
- ужасное имя для переменной ... и Count
Argh!Я думаю, что ваш код должен выглядеть следующим образом:
Option Explicit
Sub MySub()
Dim a As Long
Dim NameExists As Boolean
Dim SeriesCount As Long
SeriesCount = ActiveChart.SeriesCollection.Count
NameExists = False
For a = 1 To SeriesCount
If ActiveChart.SeriesCollection(a).Name = Range("A2").Value Then
NameExists = True
Exit For
End If
a = a + 1
Next
If NameExists = False Then
' Rest of your code goes here...
End Sub