dポイントプレゼントキャンペーン実施中!

Charts.Add
ActiveChart.ChartType = xlXYScatterLinesNoMarkers
For i = 1 To 25
   ActiveChart.SeriesCollection.NewSeries
   ActiveChart.SeriesCollection(i).XValues = "=APC!"(3,X)":"Range(lngYCut,X)
   ActiveChart.SeriesCollection(i).Values = "=APC!Cells(3,Y):Cells(lngYCut,Y)"
   ActiveChart.SeriesCollection(i).Name = "=APC!R1C&X"
 X = i * 3 + 1
  Y = i * 3 + 2
Next

上記のプログラムでグラフを作成しています。(X,Y,lngYCutは事前に定義しています。)
25個のデータをグラフにする為、For文の中でグラフデータを1つずつ追加していこうと思っています。

データ範囲を変数で指定したいため、=のあとを変えないといけないと思っています。
ただ=のあと""で囲っているため、文字として入力しているんだと思います。
その文字列として入力している場所にどうにかして変数を使いたいです。
どなたか
ActiveChart.SeriesCollection(i).XValues =
のあとに変数を使用できる方法を教えてください

「マクロでグラフを作成したい」の質問画像

A 回答 (2件)

例として、まず直値で考えてみてください。



..XValues = "=APC!R3C1:R10C1"
..Values = "=APC!R3C2:R10C2"
..Name = "=APC!R1C1"

こんな感じで、『シート名!』とR1C1形式のアドレスをセットすれば良い事がわかります。
XValuesの『C1』の1がXで『R10』の10がlngYCut。
Valuesの『C2』の2がYです。
文字列と変数を組み合わせる時は

"文字列" & 変数 & "文字列" & 変数

..のように文字列をクォートで囲み、変数は囲みません。
以下のようにしてください。

ActiveChart.SeriesCollection(i).XValues = "=APC!R3C" & X & ":R" & lngYCut & "C" & X
ActiveChart.SeriesCollection(i).Values = "=APC!R3C" & Y & ":R" & lngYCut & "C" & Y
ActiveChart.SeriesCollection(i).Name = "=APC!R1C" & X
    • good
    • 0

最近気がついたのですが、文字列でなく、Rangeで与えても動く様です。


Sub test()
Charts.Add
ActiveChart.ChartType = xlXYScatterLinesNoMarkers
ActiveChart.SeriesCollection.NewSeries
With Sheets("Sheet1")
ActiveChart.SeriesCollection(1).XValues = .Range(.Cells(1, 1), .Cells(5, 1))
ActiveChart.SeriesCollection(1).Values = .Range(.Cells(1, 2), .Cells(5, 2))
ActiveChart.SeriesCollection(1).Name = .Cells(1, 3)
End With
End Sub
これなら変数指定も簡単ですね。
但し、グラフシートがアクティブになっているので、データの存在するワークシートをきちんと記述しないと、
'Cellsメソッドは失敗しました:'_Globaオブジェクト'
などという訳の分からないエラーに悩まされます。
ご参考まで。
    • good
    • 0

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