既存のチャートと、そのチャートに適切なデータを供給するための適切な動的名前付き範囲を含むシートがあります。
私の問題は、シートがコピーされたテンプレートであり、コピーのチャートが名前付き範囲を指していないことです。名前付き範囲はシートにコピーされるため (範囲はシート固有です)、シリーズ ソース データを更新するだけでよいようです。古き良き記録では、手動で記録したときに次の構文が得られました。
ActiveChart.SeriesCollection(1).XValues = "=='Risk 1'!PDates"
ActiveChart.SeriesCollection(1).Values = "=='Risk 1'!Plan"
ActiveChart.SeriesCollection(2).XValues = "=='Risk 1'!ADates"
ActiveChart.SeriesCollection(2).Values = "=='Risk 1'!Actuals"
それを修正したバージョンで名前付き範囲にリセットしようとしました:
For Each Cht In TempSheet.ChartObjects
'Series 1 is the Plan
Cht.Activate
ActiveChart.SeriesCollection(1).XValues = "=='" & TempSheet.Name & "'!PDates"
ActiveChart.SeriesCollection(1).Values = "=='" & TempSheet.Name & "'!Plan"
'Series 2 is the Actuals
ActiveChart.SeriesCollection(2).XValues = "=='" & TempSheet.Name & "'!ADates"
ActiveChart.SeriesCollection(2).Values = "=='" & TempSheet.Name & "'!Actuals"
Next
最初のシリーズの X 値を更新しようとするステートメントで、「アプリケーション定義またはオブジェクト定義のエラー」というエラーが発生しました。
また、問題が発生した場合に備えて、PlotArea select ステートメントを追加しようとしましたが、問題は解決しませんでした。コレクションが正しく評価されるように設定されているはずのステートメントを確認しました("=='" & TempSheet.Name & "'!PDates"
たとえば、シリーズが指す必要がある「=='Risk 1'!PDates」に評価されます)。
それで、私はかなり困惑しており、誰かが提供できる助けをいただければ幸いです。前もって感謝します!