0

既存のチャートと、そのチャートに適切なデータを供給するための適切な動的名前付き範囲を含むシートがあります。

私の問題は、シートがコピーされたテンプレートであり、コピーのチャートが名前付き範囲を指していないことです。名前付き範囲はシートにコピーされるため (範囲はシート固有です)、シリーズ ソース データを更新するだけでよいようです。古き良き記録では、手動で記録したときに次の構文が得られました。

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」に評価されます)。

それで、私はかなり困惑しており、誰かが提供できる助けをいただければ幸いです。前もって感謝します!

4

2 に答える 2

0

「テンプレート」ワークシートに希望どおりのデータとグラフが含まれているが、ダミー データがある場合は、公式の Excel テンプレートとして保存します。次に、これらのシートのいずれかが必要な場合は、シート タブを右クリックし、[挿入...] をクリックします。ダイアログでテンプレートを選択し、[OK] をクリックします。このシートがテンプレートに基づいて挿入されると、そのチャートはシート内の名前にリンクされます。

于 2015-03-23T20:58:54.863 に答える
0

範囲にしようとする文字列を使用するのではなく、実際の範囲を試してから、その値を取得します。

ActiveChart.SeriesCollection(1).XValues = TempSheet.Range("PDates").Value

(等)

于 2014-08-20T19:06:21.927 に答える