Vba 使用范围时添加数据系列失败
我有以下循环试图为一系列列追加数据系列:Vba 使用范围时添加数据系列失败,vba,excel,range,worksheet,Vba,Excel,Range,Worksheet,我有以下循环试图为一系列列追加数据系列: 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.Series
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原始数据”).Range(单元格(3,k),单元格(lr,k))
上失败,但在使用.Range(“E3:E”&lr)
时不会失败
提前感谢。活动图表似乎不在
RTS原始数据上
在您的代码中,范围
被定义为在RTS原始数据
上,但两次出现的单元格
不符合工作表的要求,因此它使用的是活动工作表。
ActiveChart.SeriesCollection.Add Source:=wb.工作表(“RTS原始数据”).范围(单元格(3,k),单元格(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))
为了使所有对象(范围
和单元格
)符合“RTS原始数据”表的要求,请将与wb.工作表(“RTS原始数据”)
一起使用,并将所有对象嵌套在
下面(代码也更清晰、更短)
此外,如果您将Dim Ser定义为Series
,它还将帮助您以后编写和调试它
请尝试以下代码:
Dim Ser As Series
With wb.Worksheets("RTS Raw Data")
Do Until .Cells(1, k) = ""
Set c1 = .Cells(3, k)
Set c2 = .Cells(lr, k)
Set Ser = ActiveChart.SeriesCollection.Add ' <-- set Series to a variable, easier to code and debug later
Ser.Values = .Range(.Cells(3, k), .Cells(lr, k))
Ser.XValues = .Range("B3:B" & lr)
Ser.Name = .Cells(2, k)
If .Cells(3, k) = "-999" Then
mcwb.Shapes("CheckBox" & 8 + k).TextFrame.Characters.Text = "Unused"
Else
mcwb.Shapes("CheckBox" & 8 + k).TextFrame.Characters.Text = .Cells(2, k)
End If
Ser.AxisGroup = xlPrimary
k = k + 1
Loop
End With
Dim Ser As系列
使用wb.工作表(“RTS原始数据”)
直到。单元格(1,k)=“”
集合c1=.Cells(3,k)
设置c2=.Cells(lr,k)
Set Ser=ActiveChart.SeriesCollection.Add'是代码运行时的活动表吗.Range
正在查看RTS原始数据
,但范围定义内的单元格正在查看当前活动的工作表。您需要限定那些具有工作表名称的人员,以便使用以下内容搜索。。。以
结束以缩短代码。当我运行代码时,会出现运行时错误“450”:参数数目错误或属性分配无效
。这发生在Set Ser=ActiveChart.SeriesCollection.Add
@charwayne的哪一行?我编辑了我的上一次回复,以包括在我看到你要求的那一行之前it@charwayne您是否也在定义行的位置添加了该行?Dim Ser as系列?