我寻找不同的原因
基本上我是基于数据透视表更新图表(请注意,在我的情况下由于某些原因我不能使用数据透视表,它根本不起作用)。因此,当我停用工作表时,我的数据库处于工作表中,我的宏更新数据透视表(我没有问题)。
然后从枢轴创建图表。问题是我想要更新图表。我显然必须增加数据行,否则图表保持不变。
所以这是我更新图表的宏。
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可以工作,但显然它没有。
我很感激任何可以帮助我的评论。 非常感谢你
答案 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