Excel VBA动态设置多区域图表数据源编译报错求解决
解决Excel VBA SetSourceData多区域数据源错误
你的编译错误根源在于:Range()函数仅支持传入1-2个参数(用来定义单一连续区域的对角单元格),无法直接传入多个离散的Range对象。要传递多个非连续区域作为图表数据源,必须用Union()函数将多个区域合并为一个复合Range对象。
修正后的代码如下:
Dim rngTaskList As Range Dim rngDateList As Range Dim rngHiddenTable As Range Dim rngCombined As Range Set rngTaskList = Application.InputBox(Prompt:="Please select the task list of the project.", Title:="SPECIFY CELLS", Type:=8) Set rngDateList = rngTaskList.Offset(0, 2) Set rngHiddenTable = rngTaskList.Offset(0, 8) ' 合并三个离散区域 Set rngCombined = Union(rngTaskList, rngDateList, rngHiddenTable) ' 直接创建图表并绑定数据源,避免使用Select(更稳定) With ActiveSheet.Shapes.AddChart2(297, xlBarStacked).Chart .SetSourceData Source:=rngCombined ' 可在此添加其他图表设置,比如标题、坐标轴等 End With
关键说明:
Union()函数可以合并多个不连续的Range对象,生成一个包含所有区域的复合Range,这正是SetSourceData需要的格式- 避免使用
Select/ActiveChart,直接通过AddChart2().Chart操作图表对象,能减少因工作表/图表激活状态变化导致的错误 - 如果你的
rngHiddenTable是多列区域(比如示例中的K36:M50),Offset(0,8)会自动匹配原选择区域的行数,保持区域大小一致
内容的提问来源于stack exchange,提问作者ChiTriGuy
相关产品推荐
相关产品推荐

