更新图表选择:错误1004 vba

时间:2017-03-09 17:04:44

标签: excel-vba runtime-error bar-chart vba excel

我寻找不同的原因

基本上我是基于数据透视表更新图表(请注意,在我的情况下由于某些原因我不能使用数据透视表,它根本不起作用)。因此,当我停用工作表时,我的数据库处于工作表中,我的宏更新数据透视表(我没有问题)。

然后从枢轴创建图表。问题是我想要更新图表。我显然必须增加数据行,否则图表保持不变。

所以这是我更新图表的宏。

Sub update_chart()

Dim Sht As Worksheet
'Select the Time elapse to start from somewhere
Set Sht = Sheets("Pivot")

Sheets("Calendar").Select
    ActiveChart.SeriesCollection(1).Select
  'Update Initial request
    ActiveChart.SeriesCollection(1).Values = Sht.Range("D4", Range("D4").End(xlDown))
  'Update Vertical Axis
    ActiveChart.SeriesCollection(1).XValues = Sht.Range("C4:A4", Range("C4:A4").End(xlDown))
  'Update Planning Period
    ActiveChart.SeriesCollection(2).Values = Sht.Range("F4", Range("F4").End(xlDown))
  'Update Posting Date
    ActiveChart.SeriesCollection(3).Values = Sht.Range("G4", Range("G4").End(xlDown))
  'Update Assessment Period
    ActiveChart.SeriesCollection(4).Values = Sht.Range("H4", Range("H4").End(xlDown))
  'Update Availability
    ActiveChart.SeriesCollection(5).Values = Sht.Range("I4", Range("I4").End(xlDown))

End Sub

我得到一个运行时错误1004方法对象_Worksheet的范围失败。

基本上我希望宏使用数据透视表中的新数据更新图表,并确保不要忘记任何行。我通过添加范围X,range.Xendxldown可以工作,但显然它没有。

我很感激任何可以帮助我的评论。 非常感谢你

1 个答案:

答案 0 :(得分:0)

试试这个。您需要为每个范围引用添加工作表引用。如果您只有一个条目,也可以从顶部而不是向下工作更安全。

Sub update_chart()

Dim Sht As Worksheet
'Select the Time elapse to start from somewhere
Set Sht = Sheets("Pivot")
Sheets("Calendar").Select
    ActiveChart.SeriesCollection(1).Select
  'Update Initial request
    ActiveChart.SeriesCollection(1).Values = Sht.Range("D4", Sht.Range("D" & Sht.Rows.Count).End(xlUp))
  'Update Vertical Axis
    ActiveChart.SeriesCollection(1).XValues = Sht.Range("A4", Sht.Range("A" & Sht.Rows.Count).End(xlUp)).Resize(, 2)
  'Update Planning Period
    ActiveChart.SeriesCollection(2).Values = Sht.Range("F4", Sht.Range("F" & Sht.Rows.Count).End(xlUp))
  'Update Posting Date
    ActiveChart.SeriesCollection(3).Values = Sht.Range("G4", Sht.Range("G" & Sht.Rows.Count).End(xlUp))
  'Update Assessment Period
    ActiveChart.SeriesCollection(4).Values = Sht.Range("H4", Sht.Range("H" & Sht.Rows.Count).End(xlUp))
  'Update Availability
    ActiveChart.SeriesCollection(5).Values = Sht.Range("I4", Sht.Range("I" & Sht.Rows.Count).End(xlUp))

End Sub