我有一张包含现有图表的工作表和适当的动态命名范围,可以为该图表提供正确的数据。
我的问题是,工作表是一个复制的模板,副本的图表不再指向命名的范围。命名区域被复制到工作表(范围是特定于工作表),因此看起来应该只是更新系列源数据。当我手动记录时,好的旧记录给了我以下语法:
ActiveChart.SeriesCollection(1).XValues = "=='Risk 1'!PDates"
ActiveChart.SeriesCollection(1).Values = "=='Risk 1'!Plan"
ActiveChart.SeriesCollection(2).XValues = "=='Risk 1'!ADates"
ActiveChart.SeriesCollection(2).Values = "=='Risk 1'!Actuals"
我试图将它们重置为命名范围,修改后的版本为:
For Each Cht In TempSheet.ChartObjects
'Series 1 is the Plan
Cht.Activate
ActiveChart.SeriesCollection(1).XValues = "=='" & TempSheet.Name & "'!PDates"
ActiveChart.SeriesCollection(1).Values = "=='" & TempSheet.Name & "'!Plan"
'Series 2 is the Actuals
ActiveChart.SeriesCollection(2).XValues = "=='" & TempSheet.Name & "'!ADates"
ActiveChart.SeriesCollection(2).Values = "=='" & TempSheet.Name & "'!Actuals"
Next
我在尝试更新第一个系列的X值的语句中遇到错误“应用程序定义或对象定义的错误”。
我还尝试添加PlotArea select语句,以防万一是问题所在,但这并没有解决问题。我检查了集合应该被设置为正确评估的语句(例如"=='" & TempSheet.Name & "'!PDates"
评估为“=='风险1'!PDates”,这是系列应该指向的内容)。
有了这个,我很难过,并且会感激任何人都能提供的任何帮助。提前谢谢!
答案 0 :(得分:0)
不是使用尝试作为范围的字符串,而是尝试实际范围,然后获取其值:
ActiveChart.SeriesCollection(1).XValues = TempSheet.Range("PDates").Value
(等)
答案 1 :(得分:0)
如果“模板”工作表具有您想要的数据和图表,但使用虚拟数据,请将其另存为官方Excel模板。然后,当您需要其中一个工作表时,右键单击工作表选项卡并单击“插入...”在对话框中选择模板,然后单击“确定”。根据模板插入此工作表时,其图表将链接到工作表中的名称。