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

マクロがどのように記録されるかを見ながら、VBAのスクリプトの書き方を学んでいる初心者です。

Sub Macro1()
'
' Macro1 Macro
,
ActiveSheet.Shapes.AddChart.Select
ActiveChart.ChartType = xlLine
ActiveWindow.ScrollColumn = 1
ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection(1).Name = "='平均化'!$B$1"
ActiveChart.SeriesCollection(1).Values = "='平均化'!$B$4:$B$18"
ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection(2).Name = "='平均化'!$C$1"
ActiveChart.SeriesCollection(2).Values = "='平均化'!$C$4:$C$18"
ActiveChart.ChartType = xlLine
ActiveSheet.Shapes.AddChart.Select
ActiveChart.ChartType = xlLine
ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection(1).Name = "='平均化'!$D$1"
ActiveChart.SeriesCollection(1).Values = "='平均化'!$D$4:$D$18"
ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection(2).Name = "='平均化'!$E$1"
ActiveChart.SeriesCollection(2).Values = "='平均化'!$E$4:$E$18"
ActiveSheet.ChartObjects("グラフ 1").Activate
ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection(3).Name = "='平均化'!$F$1"
ActiveChart.SeriesCollection(3).Values = "='平均化'!$F$4:$F$18"
End Sub

以上のマクロを作成し、実行したのですが、”指定した名前のアイテムが見つかりませんでした”と出て、上手く実行されませんでした。
操作対象のオブジェクトを行き来する方法を知りたいのですが、オブジェクトを作成するたびに
ActiveSheet.ChartObjects("グラフ 1").Activate
のダブルクオーテーション内に当たる値が自動的に割り振られるため、この部分でエラーになることは分かりました。
つまりこの値をこちらから指定出来れば、望んだ動作をさせられるのではと考えているのですが、
どなたかご教示お願いできませんでしょうか。

A 回答 (1件)

>オブジェクトを作成するたびに


≪例1≫
SelectしないでWith文で括ってやります。

With ActiveSheet.Shapes.AddChart.Chart
.ChartType = xlLine
With .SeriesCollection.NewSeries
.Name = "='平均化'!$B$1"
.Values = "='平均化'!$B$4:$B$18"
.XValues = "='平均化'!$A$4:$A$18"
End With
End With

≪例2≫
グラフオブジェクトを数えた値をインデックスに使います。
最後に作成したグラフが指定できます。

With ActiveSheet.ChartObjects(.ChartObjects.Count).Chart
With .SeriesCollection.NewSeries
.Name = "='平均化'!$F$1"
.Values = "='平均化'!$F$4:$F$18"
.XValues = "='平均化'!$A$4:$A$18"
End With
End With

≪例3≫
オブジェクト変数を使います。

Dim cht As Shape
Set cht = ActiveSheet.Shapes.AddChart
With cht.Chart.SeriesCollection.NewSeries
.Name = "='平均化'!$F$1"
.Values = "='平均化'!$F$4:$F$18"
.XValues = "='平均化'!$A$4:$A$18"
End With


ChartObjects.Addでもグラフが作成できます。
私はこちらの方を好みます。
Worksheets("sheet1").ChartObjects.Add

≪参考≫
グラフ操作関連のテクニック
http://moug.net/tech/exvba/0021.htm
    • good
    • 0

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