Excel 生成图形-运行时错误424-需要对象

Excel 生成图形-运行时错误424-需要对象,excel,object,graph,vba,Excel,Object,Graph,Vba,我正在尝试使用以下VBa代码制作一个图形。但我在行中得到一个运行时错误424-需要对象: Set rngChtXVal = .Columns(1).Offset(1).Resize(.Rows.Count - 1) 出什么事了 Sub MakeGraph() Dim myChtObj As ChartObject Dim rngChtData As Variant Dim rngChtXVal As Variant Dim iColumn As Long

我正在尝试使用以下VBa代码制作一个图形。但我在行中得到一个运行时错误424-需要对象:

Set rngChtXVal = .Columns(1).Offset(1).Resize(.Rows.Count - 1)
出什么事了

    Sub MakeGraph()
    Dim myChtObj As ChartObject
    Dim rngChtData As Variant
    Dim rngChtXVal As Variant
    Dim iColumn As Long

    sel= Sheets("Data").Range(Cells(1, 1), Cells(200, 2))
     rngChtData = sel

    ' define chart's X values
    With rngChtData
       Set rngChtXVal = .Columns(1).Offset(1).Resize(.Rows.Count - 1)
    End With

    ' add the chart
    Set myChtObj = ActiveSheet.ChartObjects.Add(Left:=250, Width:=425, Top:=10, Height:=240)
    With myChtObj.Chart

        ' make an XY chart
        .ChartType = xlLine

        ' remove extra series
        Do Until .SeriesCollection.Count = 0
            .SeriesCollection(1).Delete
        Loop

        ' add series from selected range, column by column
        For iColumn = 2 To rngChtData.Columns.Count
            With .SeriesCollection.NewSeries
                .Values = rngChtXVal.Offset(, iColumn - 1)
                .XValues = rngChtXVal
                .Name = rngChtData(1, iColumn)
            End With
        Next

    End With

End Sub

您将rngChtData和rngChtXVal命名为
Range
对象,但将它们声明为
Variant
。虽然变体可以是范围,但它使调试代码变得更加困难。尽可能使用显式变量类型。要解决问题,请按以下方式更改代码:

Sub MakeGraph()
Dim myChtObj As ChartObject
Dim rngChtData As Range
Dim rngChtXVal As Range
Dim iColumn As Long

With Sheets("Data")
    Set rngChtData = .Range(.Cells(1, 1), .Cells(200, 2))
End With

' define chart's X values
With rngChtData
   Set rngChtXVal = .Columns(1).Offset(1).Resize(.Rows.Count - 1)
End With

@SiddharthRout如果我把Set放在它前面,那么我会得到同样的错误。你需要
Set
更早:
Set rngChtData=sel
我想把范围保持为一个数组,因为它将是另一个子对象的输入。因此它将针对不同的图形进行更改。你正在使用
range
对象的
Offset
方法,所以你必须选择你真正想要的——二维数组或范围对象。我想从数组中生成一个图。您能告诉我如何在vba中实现这一点吗?通过将series对象的
.values
属性设置为数组,您可以使用显式值(例如,不绑定到范围)构建图表。有关示例,请参见。