Excel图表VBA生成器引用命名区域报错1004问题
Excel VBA图表引用命名区域触发错误1004的解决办法
我尝试通过命名区域生成Excel图表,用Excel代码生成器得到了这段VBA代码:
Sub Macro_name_graph2() ' ' Macro_name_graph2 Macro ' ' ActiveChart.SeriesCollection.NewSeries ActiveChart.FullSeriesCollection(1).name = "=""data1_1""" ActiveChart.FullSeriesCollection(1).Values = "==test_macro.xlsm!data1_1ord" ActiveChart.FullSeriesCollection(1).XValues = "==test_macro.xlsm!data1_1abs" End Sub
实际图表里正确的引用格式是='test_macro.xlsm'!data1_1ord和='test_macro.xlsm'!data1_1abs,但运行代码时,ActiveChart.FullSeriesCollection(1).Values = "==test_macro.xlsm!data1_1ord"这一行触发了错误1004。我把代码改成ActiveChart.FullSeriesCollection(1).Values = "=='test_macro.xlsm'!data1_1ord"后,问题还是没解决。
两种可行的修复方案
- 直接引用命名区域对象(推荐)
不用字符串拼接引用路径,直接通过工作簿的Names对象获取命名区域的单元格范围赋值,代码更简洁且不易出错:
Sub Macro_name_graph2() Dim targetChart As Chart Dim newSeries As Series ' 获取当前激活的图表 Set targetChart = ActiveChart ' 添加新系列 Set newSeries = targetChart.SeriesCollection.NewSeries ' 设置系列名称、数值和X轴值 newSeries.Name = "data1_1" newSeries.Values = ThisWorkbook.Names("data1_1ord").RefersToRange newSeries.XValues = ThisWorkbook.Names("data1_1abs").RefersToRange End Sub
- 修正字符串引用格式
原代码里的双等号是错误的,正确的单字符串引用只需要一个等号开头,同时用单引号包裹工作簿名称:
Sub Macro_name_graph2() ' ' Macro_name_graph2 Macro ' ' ActiveChart.SeriesCollection.NewSeries ActiveChart.FullSeriesCollection(1).name = "data1_1" ActiveChart.FullSeriesCollection(1).Values = "='test_macro.xlsm'!data1_1ord" ActiveChart.FullSeriesCollection(1).XValues = "='test_macro.xlsm'!data1_1abs" End Sub
内容的提问来源于stack exchange,提问作者edwylin
相关产品推荐
相关产品推荐

