使用VBA(EXCEL)从不同工作表中选择图表的数据范围

时间:2016-12-24 15:04:44

标签: excel vba excel-vba charts

如何使用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

2 个答案:

答案 0 :(得分:2)

假设Chart"data_sheet"的名称而WorksheetCharts("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 之类的快捷方式。

类似于:

.SetSourceData

会起作用,因为Sheets("chart_sheet").SetSourceDataSheets的缩写。 (另请注意,Worksheets集合包含ChartsCharts("chart_sheet")个对象,因此Sheets("chart_sheet")ActiveChart都指向相同的内容。)

ActiveSheet指的是当前有效图表,就像 Sheets("chart_sheet").Activate ActiveChart.SetSourceData Source:=Worksheets("data_sheet").Range("A1:A20") 返回当前工作表一样。如果在执行该代码时没有激活图表,则会出现错误。

所以下面这段代码也可能适合你:

getchar()

答案 1 :(得分:1)

因为chart_sheet可能不是工作表,你试试这个吗?

with sheets("chart_sheet")