2012-04-17 2 views
0

Excel에서 시트 당 하나의 차트를 만들어야합니다. 여기 내 코드는 다음과 같습니다.Excel. 다른 시트로 차트 만들기

Sheets(i).Activate 

    For Each cht In ActiveSheet.ChartObjects 
     cht.Delete 
    Next 

    'create chart 
    Set chtChart = ActiveSheet.ChartObjects.Add(Left:=75, Width:=300, Top:=75, Height:=300).Chart 
    With chtChart 
     .ChartType = xlXYScatterSmooth 

     Do While .SeriesCollection.Count <> 0 
      Do Until .SeriesCollection.Count = 0 
       .SeriesCollection(1).Delete 
      Loop 
     Loop 

     Set srsNew = .SeriesCollection.NewSeries 
     With srsNew 
      .XValues = "='" & Sheets(i).Name & "'!" & _ 
      Sheets(i).Range(Range("K2"), Range("k2").End(xlDown)).Address 
      .Values = "='" & Sheets(i).Name & "'!" & _ 
      Sheets(i).Range(Range("l2"), Range("l2").End(xlDown)).Address 
     End With 
    End With 

첫 번째 시트는 두 번째, 세 번째 ... 작동하지 않습니다. XValues ​​또는 Values에 "application defined or object defined error"오류 1004를 발행합니다. 나는 또한 블록과 외부

range("K2") 

을 소개 만약 내가 두 번째, 세 번째 .... 시트에 있지만 처음에 오류가 발생하는 것으로 나타났습니다.

모든 조언은 그들이 속한

감사

주앙이

답변

4
  1. 이 시트로 Range들 자격을 가장 환영합니다.
  2. Select 또는 ActiveSheet을 사용하지 마십시오.
  3. 문자열 주소를 작성하지 마십시오. 범위를 직접 사용하십시오. 완전히 같은 그 범위 자격을 갖춘 경우
Dim CurSheet As Worksheet, cht As ChartObject 
Dim chtChart As Chart, srsNew As Series 

... 

Set CurSheet = Worksheets(i) 

For Each cht In CurSheet.ChartObjects 
    cht.Delete 
Next 


'create chart 
Set chtChart = CurSheet.ChartObjects.Add(Left:=75, Width:=300, Top:=75, Height:=300).Chart 
With chtChart 
    .ChartType = xlXYScatterSmooth 

    Do While .SeriesCollection.Count <> 0 
    .SeriesCollection(1).Delete 
    Loop 

    Set srsNew = .SeriesCollection.NewSeries 
    With srsNew 
    .XValues = CurSheet.Range(CurSheet.Range("k2"), CurSheet.Range("k2").End(xlDown)) 
    .Values = CurSheet.Range(CurSheet.Range("l2"), CurSheet.Range("l2").End(xlDown)) 
    End With 
End With 
+0

감사합니다! 아주 좋은 팁! – jpcgandre

1

는 아마 도움이 될 :

With srsNew 
    .XValues = "='" & Sheets(i).Name & "'!" & _ 
    Sheets(i).Range(Sheets(i).Range("K2"), Sheets(i).Range("k2").End(xlDown)).Address 
    .Values = "='" & Sheets(i).Name & "'!" & _ 
    Sheets(i).Range(Sheets(i).Range("l2"), Sheets(i).Range("l2").End(xlDown)).Address 
End With 
+0

감사합니다 !! 그것은 작동합니다! – jpcgandre

관련 문제