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议是最受欢迎的
问候
若昂
- 使用他们所属的表来限定您的
Range
。 - 不要使用
Select
或ActiveSheet
。 - 不要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