Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 通过宏将图表系列源设置为命名范围_Excel_Vba_Charts_Named Ranges - Fatal编程技术网

Excel 通过宏将图表系列源设置为命名范围

Excel 通过宏将图表系列源设置为命名范围,excel,vba,charts,named-ranges,Excel,Vba,Charts,Named Ranges,我有一个包含现有图表和适当的动态命名范围的工作表,以便为该图表提供正确的数据 我的问题是,工作表是一个被复制的模板,副本的图表不再指向指定的范围。命名的范围被复制到工作表中。这些范围是特定于工作表的,因此似乎只需更新系列源数据即可。当我手动录制时,Good old record为我提供了以下语法: ActiveChart.SeriesCollection(1).XValues = "=='Risk 1'!PDates" ActiveChart.SeriesCollection(1).Values

我有一个包含现有图表和适当的动态命名范围的工作表,以便为该图表提供正确的数据

我的问题是,工作表是一个被复制的模板,副本的图表不再指向指定的范围。命名的范围被复制到工作表中。这些范围是特定于工作表的,因此似乎只需更新系列源数据即可。当我手动录制时,Good old record为我提供了以下语法:

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,这是本系列应该指出的


有了这一点,我很难堪,希望任何人都能提供帮助。提前谢谢

与其使用试图成为范围的字符串,不如尝试一个实际范围,然后获取其值:

ActiveChart.SeriesCollection(1).XValues = TempSheet.Range("PDates").Value

etc

如果模板工作表具有所需的数据和图表,但具有虚拟数据,请将其另存为正式Excel模板。然后,当您需要其中一张图纸时,右键单击图纸选项卡并单击“插入…”。。。在对话框中选择模板,然后单击“确定”。当根据模板插入此工作表时,其图表将链接到工作表中的名称。

尝试一下,我没有发现任何错误,但当我手动检查系列的源代码时,它已设置为={N/a,N/a,N/a,N/a,N/a,N/a,N/a,N/a,N/a}.当我从每个语句的末尾删除.Value时,该系列最终设置为命名范围所覆盖的范围,这很接近,但我确实希望将其设置为命名范围,以避免在源范围获得更多行时更新图表范围作为注释,我已经实现了这段代码,以便在将新行添加到图表的源区域时,执行该添加的宏将更新图表以包含新行。不理想,但它完成了任务。问题是在公式的开头有两个等号吗?除此之外,它应该会起作用。