2016-12-24 6 views
0

VBAを使用して異なるシートからチャートのデータ範囲を選択する方法を教えてください。データシート名がdata_sheet、チャートシート名がchart_sheet、データ範囲がA1:A20であるとします。どのように私はこれをExcelで行うことができますか?私はTHISをチェックしましたが、別のシートでは動作しませんでした。そうでなければ、私はTHISをチェックしますが、このエラーが返されました:Subscript out of rangeVBA(EXCEL)を使用して異なるシートからチャートのデータ範囲を選択

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

答えて

2

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

あなたWithブロックは何もしていませんでした便利です - Withブロックの目的は、のようなショートカットとして.と入力するだけです。

だから、のようなもの:.SetSourceDataSheets("chart_sheet").SetSourceDataの略語であるため、

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

は、働くだろう。 (Sheetsコレクションは同じものをWorksheetsChartsオブジェクト、そうCharts("chart_sheet")Sheets("chart_sheet")両方のポイントの両方が含まれていることにも注意。)


ActiveChartは単に現在のシートにActiveSheet戻るように、現在アクティブなチャートを指します。そのコードが実行されているときにグラフをアクティブにしていないと、エラーが発生します。

だから、次のコードはまた、おそらくあなたのために働いているだろう:

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

chart_sheetはおそらくワークシートではないとして、あなたはこれを試すのですか?

あなた Chart"data_sheet"の名前はあなたの Worksheetの名前ですが、私はあなたが次のことをやりたいと思います "chart_sheet"を想定し
with sheets("chart_sheet") 
+0

あなたはそのchart_sheetが存在しない確認したのですか? – h2so4

+0

返されたエラー: 'この変数に'オブジェクト変数またはブロック変数が設定されていません 'ActiveChart.SetSourceData Source:= Sheets(" data_sheet ")Range(" A1:A20 ")' – user2991243

関連する問題