Excel VBA调用Regress插件跨工作表输出时图表为空求助
问题:Excel VBA调用Regress工具跨工作表输出时图表无数据
在Excel 365中,通过VBA调用分析工具库的Regress函数时出现异常:
- 当回归结果输出至输入数据所在的
input工作表时,所有内容(含图表)均正常显示; - 当输出至另一提前创建的
output工作表时,回归参数计算正确,但图表仅显示框架、无数据(通过「选择数据」确认无关联数据源); - 宏位于Module1中,运行无报错信息。
宏代码如下:
Sub Makro2() ' output in same sheet as input Sheets("input").Activate Application.Run "ATPVBAEN.XLAM!Regress", _ Sheets("input").Range("$A$1:$A$11"), _ Sheets("input").Range("$C$1:$D$11"), _ False, True, , _ Sheets("input").Range("A20"), _ True, True, True, True, , True ' output in other sheet Sheets("input").Activate Application.Run "ATPVBAEN.XLAM!Regress", _ Sheets("input").Range("$A$1:$A$11"), _ Sheets("input").Range("$C$1:$D$11"), _ False, True, , _ Sheets("output").Range("A1"), _ True, True, True, True, , True End Sub
问题原因
ATPVBAEN.XLAM中的Regress工具在生成图表时,内部数据源关联逻辑依赖当前激活的工作表:
- 输出到
input表且激活状态为input时,图表的数据源引用能正确指向当前表的单元格,显示正常; - 输出到
output表但仍激活input时,工具生成图表会错误地以激活的input为基准构建数据源引用,导致output表中的图表无法匹配到正确数据源(实际数据在input,但引用未关联正确的工作表前缀)。
解决办法
在调用Regress输出到目标工作表前,先激活该输出工作表,确保工具的图表生成逻辑能正确处理跨表数据源引用:
Sub Makro2_Fixed() ' output in same sheet as input Sheets("input").Activate Application.Run "ATPVBAEN.XLAM!Regress", _ Sheets("input").Range("$A$1:$A$11"), _ Sheets("input").Range("$C$1:$D$11"), _ False, True, , _ Sheets("input").Range("A20"), _ True, True, True, True, , True ' output in other sheet (fixed version) Sheets("output").Activate ' 先激活输出工作表 Application.Run "ATPVBAEN.XLAM!Regress", _ Sheets("input").Range("$A$1:$A$11"), _ Sheets("input").Range("$C$1:$D$11"), _ False, True, , _ Sheets("output").Range("A1"), _ True, True, True, True, , True End Sub
内容的提问来源于stack exchange,提问作者Data4711
相关产品推荐
相关产品推荐

