应用程序定义或对象定义的错误

时间:2012-12-16 11:45:54

标签: excel vba excel-vba

所以我有一张名为“Dashboard”的工作表,我有几个图表,但每周我都会在这些图表所基于的表格中添加数据。包含此表数据的第二个工作表是“历史总计”,我想要的数据位于A到E列(包括标签和标题)。我正在尝试自动化图表更新,我不知道为什么这不起作用。这是我到目前为止的代码:

Sheets("Dashboard").Select
ActiveSheet.ChartObjects("Chart 4").Activate
ActiveChart.SetSourceData Source:=Sheets("Historical Totals").Range("A1", Range("E1").End(xlDown))

我已经尝试分离我们的范围了,它正在选择合适的数据,所以我真的不知道我在哪里犯了错误。

2 个答案:

答案 0 :(得分:3)

尝试以下方法。每次使用Range时都需要参考数据表:

Sheets("Dashboard").ChartObjects("Chart 4").Activate
ActiveChart.SetSourceData _
        Source:=Sheets("Historical Totals").Range(Sheets("Historical Totals").Range("A1"), _
                Sheets("Historical Totals").Range("E1").End(xlDown))

答案 1 :(得分:0)

假设您只有worksheet“历史总计”中的表格,我通常会xlUp而不是xlDown,但以下内容实际上与Philip A Barnes的答案相同:< / p>

Sub setArea()

With Excel.ActiveWorkbook
        '.Sheets("Dashboard").Select '<==no need to select for the code to execute
        .Sheets("Dashboard").ChartObjects("Chart 1").Activate
End With

With Excel.ActiveWorkbook.Sheets("Historical Totals")
     Excel.ActiveChart.SetSourceData _
                      Source:=.Range( _
                                    .Cells(1, 1), _
                                    .Cells(.Cells(.Rows.Count, 5).End(Excel.xlUp).Row, 5) _
                                    )
End With

End Sub