2013-09-03 3 views
0

작성한 아래 코드에 문제가 있습니다. 이전에 DL5에서 실행 한 그래프의 항목을 업데이트해야합니다 : HX5에서 DL5 : IU5까지, 따라서 루프가 100 장 정도 있습니다. 어떤 이유로 그것은 단계별로 진행되고 있지만 의미 론적 오류가있는 것으로 보입니다. 누군가가 그것이 무엇인지에 관해 밝혀 줄 수 있기를 바랬습니다.Excel VBA - 그래프 업데이트 루프

숫자가 세 개 있습니다. 여러 시트의 그림에 액세스하는 가장 좋은 방법인지는 확실하지 않습니다. 서로 다른 데이터를 사용하여 동일한 복사본을 만듭니다. 처음 두 개는 시계열을 추가 열 (IU에 예 HX), 마지막 그림은 단순히 색이 다른 색에 라인 (라인이 투영 된 실제 라인 조각으로 분할됩니다.)

Dim i As Integer 

For i = 31 To ActiveWorkbook.Worksheets.Count 

On Error Resume Next 

Worksheets(i).ChartObjects("Chart 2").Activate 
ActiveChart.SeriesCollection(1).Values = "='" & Worksheets(i).Name & "'!$DL$5:$IU$5" 
ActiveChart.SeriesCollection(1).XValues = "='" & Worksheets(i).Name & "'!$DL$3:$IU$3" 

Worksheets(i).ChartObjects("Chart 6").Activate 
ActiveChart.SeriesCollection(1).Values = "='" & Worksheets(i).Name & "'!$DL$14:$IU$14" 
ActiveChart.SeriesCollection(2).Values = "='" & Worksheets(i).Name & "'!$DL$15:$IU$15" 
ActiveChart.SeriesCollection(3).Values = "='" & Worksheets(i).Name & "'!$DL$16:$IU$16" 
ActiveChart.SeriesCollection(3).XValues = "='" & Worksheets(i).Name & "'!$DL$3:$IU$3" 

Worksheets(i).ChartObjects("Chart 1").Activate 
ActiveChart.SeriesCollection(1).Points(30).Border.Color = RGB(69, 114, 167) 
ActiveChart.SeriesCollection(1).Points(30).Format.Line.ForeColor.RGB = RGB(69, 114, 167) 

Next i 
+0

주석 처리'에 오류 Next'을 다시 시작합니다. 오류가 있습니까? 예인 경우 무엇이며 어떤 회선에서 발생합니까? –

+0

솔루션 아이디어에 감사드립니다. 나는 그것을 시도했다, 같은 오류로 실행 (실행 나타납니다하지만 값을 변경하지 끝납니다.) 나는 오류 (나는 즉시 그렇게해야한다고 알고 있어야한다!) 및 동일한 문제가 정상적으로 실행하는 것처럼 보이지만 변경 사항이 없습니다 되고있다. – mburke05

+0

루프에 중단 점을 넣으면 실제로 코드를 통과합니까? –

답변

0

당신은 선택/활성화 피해야 형식을 어디에 당신이 할 수있는 . 테스트되지 않은 :

Sub Tester() 

Dim i As Integer 
Dim sht As Worksheet 

    For i = 31 To ActiveWorkbook.Worksheets.Count 
     Set sht = ActiveWorkbook.Sheets(i) 

     With sht.ChartObjects("Chart 2").Chart.SeriesCollection(1) 
      .Values = sht.Range("$DL$5:$IU$5") 
      .XValues = sht.Range("$DL$3:$IU$3") 
     End With 

     With sht.ChartObjects("Chart 6").Chart 
      .SeriesCollection(1).Values = sht.Range("$DL$14:$IU$14") 
      .SeriesCollection(2).Values = sht.Range("$DL$15:$IU$15") 
      .SeriesCollection(3).Values = sht.Range("$DL$16:$IU$16") 
      .SeriesCollection(3).XValues = sht.Range("$DL$3:$IU$3") 
     End With 

     With sht.ChartObjects("Chart 1").Chart.SeriesCollection(1).Points(30) 
      .Border.Color = RGB(69, 114, 167) 
      .Format.Line.ForeColor.RGB = RGB(69, 114, 167) 
     End With 

    Next i 

End Sub 

편집 : 이름 바꾸기 차트

For i = 31 To ActiveWorkbook.Worksheets.Count 
     With ActiveWorkbook.Sheets(i) 
      on error resume next 
      .chartobjects("Chart 13").Name = "Chart 2" 
      on error goto 0 
     End With 
Next i 
+0

감사합니다. Tim! 매우 감사. – mburke05

+0

당신이'.ChartObjects ("Chart 1") .name = "Chart 2"''? .ChartObjects ("Chart 1"). name' "Chart 2" ? .ChartObjects ("Chart 2") .name'은 "Chart 2"를 출력합니다 ... 이제는 ChartObjects ("Chart 1")와 ChartObjects ("Chart 2")는 같은 객체를 참조합니다 ... WTF Microsoft!? – ThreeStarProgrammer57