質問概要
EXCELシート上に作成した折れ線グラフのデータ範囲を変更するVBAを作成しております。
データ系列の範囲を変更するVBAコードで不明な点があり質問させて頂きました。
シートの構成
■Sheet1
折れ線グラフの元となるデータが時系列行方向に存在します。
A(日付) | B(系列1) | C(系列2) |
---|---|---|
2020/06/01 | 1000 | 5.0 |
2020/06/02 | 1005 | 5.0 |
2020/06/03 | 1030 | 5.1 |
: | : | : |
■Sheet2
折れ線グラフオブジェクト(グラフ1)が存在します。
系列範囲の変更
系列1と2をそれぞれSheet1のB列、C列の任意の範囲に変更するVBAコードを
先ずマクロの記録で取得してみました。
VBA
1'マクロの記録で取得したコード 2 ActiveSheet.ChartObjects("グラフ 1").Activate 3 ActiveChart.FullSeriesCollection(1).Select 4 Application.CutCopyMode = False 5 ActiveChart.FullSeriesCollection(1).Values = "=Sheet1!$B$2:$B$1263" '系列1の範囲 6 ActiveChart.FullSeriesCollection(2).Values = "=Sheet1!$C$2:$C$1263" '系列2の範囲
系列1と2の範囲を任意に書き換えて動作することは確認できましたが、ActiveSheetやActiveChartを
使用したくなかったので、以下のように書き換えて実行すると実行時エラーとなりました。
VBA
1''ActiveXXXを書き換え 2''dataRange1とdataRange2にそれぞれ、=Sheet1!$B$2:$B$1263 と =Sheet1!$C$2:$C$1263 が 3''設定されています。(Debbug.Printで確認済) 4 With ThisWorkbook.Sheets("Sheet2") 5 .ChartObjects("グラフ 1").FullSeriesCollection(1).Values = dataRange1 '実行時エラー発生ステップ 6 .ChartObjects("グラフ 1").FullSeriesCollection(2).Values = dataRange2 7 End With
エラーメッセージ
実行時エラー'438':
オブジェクトは、このプロパティまたはメソッドをサポートしていません。
質問事項
- ActiveSheet.ChartObjects("グラフ1")は、
ThisWorkbook.Sheets("Sheet2").ChartObjects("グラフ1")と等価。
0. 同様にActiveChart.FullSeriesCollection(1).Valuesは、
ThisWorkbook.Sheets("Sheet2").ChartObjects("グラフ1").FullSeriesCollection(1).Valuesと等価。
と考えましたが、なぜエラーが発生し、どこに誤りがあるかわかりません。
原因を教えて頂けないでしょうか?
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/06/17 23:07