Excel中。 在不同的工作表创build图表

我需要在Excel中为每张图创build一个图表。 这是我的代码:

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中发出错误1004“应用程序定义或对象定义的错误”。 我也注意到,如果我介绍

 range("K2") 

在带块的外面,我在第二,第三,第一个页面中得到一个错误,但不是第一个。

任何build议是最受欢迎的

问候

若昂

  1. 使用他们所属的表来限定您的Range
  2. 不要使用SelectActiveSheet
  3. 不要build立string地址。 直接使用范围。
 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 

也许这将有助于如果你完全符合这样的范围:

 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