Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 使用范围时添加数据系列失败_Vba_Excel_Range_Worksheet - Fatal编程技术网

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系列?