You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 17:22:43