2011-08-04 6 views
0

Excel xy-Diagramm에 대한 Makro를 프로그래밍하고 있습니다 다이어그램은 거의 정확하지만 DataSeriesNames는 공개했습니다. 나는 이미 모든 시리즈를 살펴보고 이름을 비교하려고 시도했다. 오류는 없었지만 작동하지 않았습니다.Excel 다이어그램 VBA의 일련 번호

코드는 같았다 :

For a=1 to Count 
    If ActiveChart.SeriesCollection(Count).Name = Range("A2").Value Then 
    Name = true 
    End If 
    a = a + 1 
Next 

If Name = false Then 
    ActiveChart.SeriesCollection.NewSeries 
End If 
ActiveChart.SeriesCollection(Count).Name = "='Tasks'!$D$" & i 
ActiveChart.SeriesCollection(Count).XValues = "='Tasks'!$B$" & i 
ActiveChart.SeriesCollection(Count).Values = "='Tasks'!$C$" & i 

제조 로빈

답변

1

잘못 여기에 몇 가지가 있습니다.

우선, 당신은 항상 같은 시리즈를보고 있습니다! 귀하의 If 성명서에 Counta으로 대체하고 싶습니다. 그가 해결되면

If ActiveChart.SeriesCollection(a).Name 

둘째, 당신의 Name 변수가 어떤 시점에서 True로 설정됩니다하더라도, 그것은 For...Next 루프 시리즈 콜렉션의 나머지 부분을 반복 계속 나중에 False로 다시받을 수 있습니다. 이를 방지하기 위해이 같은 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 

, 나는 그것의 값이 시작하는 False되지 않도록 그것은 변형있어 기본적 있도록, 부울 변수로 Name를 선언하지 않은 의심! 프로 시저 상단에있는 변수를 Dim Name as Boolean으로 선언해야하며, Name을 기본값으로 False으로 지정하려면 실제로 이렇게 명시해야합니다. 루프 앞에 Name = False을 넣으십시오. 게다가, Name은 변수에 대한 끔찍한 이름입니다 ... 그리고 역시 Count 아아! 귀하의 코드는 다음과 같아야합니다 :

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 
+0

답해 주셔서 감사합니다. 나는이 것들을 바로 잡았다. 여전히 작동하지 않습니다. 변수 Name은 이름이 존재하지 않더라도 항상 true로됩니다. 나는 이유를 모른다. – MrPropper

+0

부울 및 = false가있는 것이 있습니다. 내 실수는 ActiveChart.SeriesCollection.Count를 사용하지 않았다는 것입니다. 이제는 작동합니다. thx very much =) – MrPropper