【问题标题】:Select data range for a chart from different sheet using VBA (EXCEL)使用 VBA (EXCEL) 从不同的工作表中选择图表的数据范围
【发布时间】:2016-12-24 15:04:44
【问题描述】:

如何使用 VBA 从不同的工作表中为图表选择数据范围?假设数据表名称为data_sheet,图表表名称为chart_sheet,我的数据范围为A1:A20。我怎样才能在excel中做到这一点?我检查了THIS,但不适用于不同的工作表。否则,我检查了THIS,但返回了这个错误:Subscript out of range

 With Worksheets("chart_sheet")
       ActiveChart.SetSourceData Source:=Worksheets("data_sheet").Range("A1:A20")
 End With

【问题讨论】:

    标签: vba excel charts


    【解决方案1】:

    假设"chart_sheet" 是您的Chart 的名称并且"data_sheet" 是您的Worksheet 的名称,我认为您想要执行以下操作:

    Charts("chart_sheet").SetSourceData Source:=Worksheets("data_sheet").Range("A1:A20")
    

    您的 With 块没有做任何有用的事情 - With 块的目的是让您只需键入 . 作为 Worksheets("data_sheet"). 之类的快捷方式。

    比如:

    With Sheets("chart_sheet")
        .SetSourceData Source:=Worksheets("data_sheet").Range("A1:A20")
    End With
    

    会起作用,因为.SetSourceDataSheets("chart_sheet").SetSourceData 的缩写。 (还要注意Sheets 集合同时包含WorksheetsCharts 对象,所以Charts("chart_sheet")Sheets("chart_sheet") 都指向同一个东西。)


    ActiveChart 指的是当前活动的图表,就像ActiveSheet 返回到当前工作表一样。如果在执行那段代码时您没有激活图表,则会出现错误。

    所以下面这段代码也可能对你有用:

        Sheets("chart_sheet").Activate
        ActiveChart.SetSourceData Source:=Worksheets("data_sheet").Range("A1:A20")
    

    【讨论】:

      【解决方案2】:

      由于 chart_sheet 可能不是工作表,您是否尝试过?

      with sheets("chart_sheet")
      

      【讨论】:

      • 您确认 chart_sheet 确实存在吗?
      • 返回错误:Object variable or With block variable not set in this line ActiveChart.SetSourceData Source:=Sheets("data_sheet").Range("A1:A20")
      猜你喜欢
      • 1970-01-01
      • 2013-07-07
      • 1970-01-01
      • 1970-01-01
      • 2016-08-15
      • 2023-03-25
      • 1970-01-01
      • 2013-03-28
      • 1970-01-01
      相关资源
      最近更新 更多