1

多数の既存のグラフにデータを追加したいと考えています。各グラフには異なる数のデータ系列があり、生データの場所は同じワークブックのどこかにあると仮定します。これが私が始めていることです:

For iChart = 1 To iCount
    ActiveSheet.ChartObjects("Chart " & iChart).Activate
    intSeries = 1
    Do Until ActiveChart.SeriesCollection(intSeries).Name = ""
        Set rXVal = ActiveChart.SeriesCollection(intSeries).XValues '<- Object Required error
        Set rXVal = Range(rXVal, rXVal.End(xlDown))
        Set rYVal = ActiveChart.SeriesCollection(intSeries).Values
        Set rYVal = Range(rYVal, rYVal.End(xlDown))
        ActiveChart.SeriesCollection(intSeries).XValues = rXVal
        ActiveChart.SeriesCollection(intSeries).Values = rYVal
        intSeries = intSeries + 1
    Loop
Next iChart

それが機能することはわかっていますが、行ActiveChart...XValues = rXValに「オブジェクトが必要です」というエラーが表示されますSet rXVal = ActiveChart....XValues。データ系列を定義するために範囲が入ったので、その範囲を再度取得して追加できると想定しています。

更新
物事を少し明確にするために、8 か所に加速度計があり、FFT ソフトウェアをセットアップして、4 つの別々の周波数帯域でピーク振動応答を記録します。これにより、サンプルごとに 32 のデータ ポイントが得られます。エクスポートすると、ソフトウェアは 4 枚のシートを含む Excel ワークブックを吐き出します。各周波数帯域に 1 つ。各シートには、横方向に加速度計の名前があり、下方向にサンプル番号があります。

4

2 に答える 2

9

この構文を使用して成功しました:

Dim rXVal() As Variant
rXVal = ActiveChart.SeriesCollection(intSeries).XValues

アップデート

この場合、与えられたステートメント ( ActiveChart.SeriesCollection(intSeries).XValues)は配列であり、範囲ではないため、配列を取得します。の Series オブジェクトを掘り下げると、[ローカル] ウィンドウに次のように表示されますActiveChart.SeriesCollection(intSeries)

ここに画像の説明を入力

(私のダミー データには、r1、r2、r3、r4 という名前の行があります。)

私が言いたいのXValuesは、その占有範囲を示すプロパティはありません。

実際に range が必要な場合は、プロパティから取得することをお勧めしformulaます。そして、私が提案する方法は、エラーの原因となっている行を次の行に置き換えることです。

Set rXVal = Range(Split(ActiveChart.SeriesCollection(intSeries).Formula, ",")(1))

次に、 の範囲を取得しようとしていますValues。同様に、これを使用します。

Set rYVal = Range(Split(ActiveChart.SeriesCollection(intSeries).Formula, ",")(2))

別物。

次の行では、最終的にエラーが発生します。

intSeries = 1
Do Until ActiveChart.SeriesCollection(intSeries).Name = ""
    ...some code...
    intSeries = intSeries + 1
Loop

それらを次のように変更してください:

For intSeries = 1 To ActiveChart.SeriesCollection.Count
    ...some code...
Next

さらに別のこと。

何度も繰り返すので、と の使用Withを検討してください。そうすれば、この長い行をスキップするだけなので、コードがはるかに読みやすくなります! それは素晴らしいことではないでしょうか?End WithActiveChart.SeriesCollection(intSeries)

于 2015-02-08T06:22:53.583 に答える