アプリ版:「スタンプのみでお礼する」機能のリリースについて

EXCEL2007 <VBAで散布図の系列の追加>


標記の通り、VBAで散布図に新たに系列を追加したいのです。
たとえば現在、系列1があるとします。
そこで、横軸がA1:A10、縦軸がB1:B10のデータを追加するとします。

    ActiveChart.SeriesCollection.Add Range("A1:B10")

しかし、このマクロだと縦軸がA1:A10の系列2と縦軸がB1:B10の系列3ができてしまします。

そこで、ためしに

    ActiveChart.SeriesCollection.Add Range("A1")   '仮に作る

    With ActiveChart.SeriesCollection(2)
      .XValues = Range("A1:A10")
      .Values = Range("B1:B10")
    End With

とすると、「実行時エラー'1004'; アプリケーション定義またはオブジェクト定義のエラーです。」となります。


いろいろ検索したのですが、これと言ったのがみつかりません。
意図するマクロはどのようなものになるのでしょうか。
ご教示お願いします。

A 回答 (2件)

NewSeriesメソッドで系列が追加出来ます。



ActiveChartがグラフシートならセルは持っていません。
よって
.XValues = Range("A1:A10")
は成立しません。
元データがあるシート名を明記してください。

≪例1≫
With ActiveChart.SeriesCollection.NewSeries
  .XValues = Sheets("Sheet1").Range("A1:A10")
  .Values = Sheets("Sheet1").Range("B1:B10")
End With

≪例2≫
With Charts("Graph1").SeriesCollection.NewSeries
  .XValues = Sheets("Sheet1").Range("A1:A10")
  .Values = Sheets("Sheet1").Range("B1:B10")
End With

≪例3≫
With Charts(1).SeriesCollection.NewSeries
  .XValues = Sheets("Sheet1").Range("A1:A10")
  .Values = Sheets("Sheet1").Range("B1:B10")
End With
    • good
    • 1
この回答へのお礼

そうですね。Sheets("Sheet1").を加えないとだめですね。
いつも的確なご回答ありがとうございます。

お礼日時:2010/09/29 08:02

シート上グラフの場合で、


既に系列1があって、グラフを選択して標準モジュールの以下コードを実行すると
>ActiveChart.SeriesCollection.Add Range("A1")   '仮に作る
>With ActiveChart.SeriesCollection(2)
>  .XValues = Range("A1:A10")
>  .Values = Range("B1:B10")
>End With
これでもうまく行きます。
どの行でエラーが出てますか?

以下も試してみてください。
Sub test()
  With ActiveSheet.ChartObjects(1).Chart.SeriesCollection.NewSeries
    .XValues = Range("A1:A10")
    .Values = Range("B1:B10")
  End With
End Sub
    • good
    • 0
この回答へのお礼

すみません、埋め込みグラフではありませんでした。
埋め込みグラフのシートとデータのシートが同じであれば上記でうまくいくということですね。

ご回答どうもありがとうございます。

お礼日時:2010/09/29 08:04

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!