我有以下循环尝试为一系列列附加数据系列:
Do Until wb.Worksheets("RTS Raw Data").Cells(1, k) = ""
Set c1 = Cells(3, k)
Set c2 = Cells(lr, k)
ActiveChart.SeriesCollection.Add Source:=wb.Worksheets("RTS Raw Data").Range(Cells(3, k), Cells(lr, k))
ActiveChart.SeriesCollection(11 + k).XValues = wb.Worksheets("RTS Raw Data").Range("B3:B" & lr)
ActiveChart.SeriesCollection(11 + k).Name = wb.Worksheets("RTS Raw Data").Cells(2, k)
If (wb.Worksheets("RTS Raw Data").Cells(3, k) = "-999") Then
mcwb.Shapes("CheckBox" & 8 + k).TextFrame.Characters.Text = "Unused"
Else
mcwb.Shapes("CheckBox" & 8 + k).TextFrame.Characters.Text = wb.Worksheets("RTS Raw Data").Cells(2, k)
End If
ActiveChart.SeriesCollection(11 + k).AxisGroup = xlPrimary
k = k + 1
Loop
代码在ActiveChart.SeriesCollection.Add Source:=wb.Worksheets("RTS Raw Data").Range(Cells(3, k), Cells(lr, k))
上失败,但在使用.Range("E3:E" & lr)
时不会失败。
提前致谢。
答案 0 :(得分:1)
看起来ActiveChart不在RTS Raw Data
上。
在您的代码中,Range
被定义为RTS Raw Data
,但Cells
的两次出现不符合表单,因此它使用的是活动表。
ActiveChart.SeriesCollection.Add Source:=wb.Worksheets("RTS Raw Data").Range(Cells(3, k), Cells(lr, k))
尝试使用With...End With
块来缩短代码:
With wb.Worksheets("RTS Raw Data")
ActiveChart.SeriesCollection.Add Source:=.Range(.Cells(3, k), .Cells(lr, k))
End With
这与写作相同:
ActiveChart.SeriesCollection.Add Source:=wb.Worksheets("RTS Raw Data").Range(wb.Worksheets("RTS Raw Data").Cells(3, k), wb.Worksheets("RTS Raw Data").Cells(lr, k))
答案 1 :(得分:0)
为了使所有对象(Range
和Cells
)符合“RTS原始数据”表格,使用With wb.Worksheets("RTS Raw Data")
,并使用{{1}将下面的所有对象嵌套(代码也更清晰,更短)。
此外,如果您定义.
,它还可以帮助您以后编写和调试它。
尝试以下代码:
Dim Ser As Series