HOME > 即効テクニック > Excel VBA > グラフ関連のテクニック > ワークシートにグラフを挿入する

即効テクニック

グラフ関連のテクニック

ワークシートにグラフを挿入する

(Excel 97/2000/2002/2003/2007/2013/2016)
ワークシート上に埋め込みグラフを作る操作をマクロ記録すると、次のようなコードが記録されます。

Sub Macro1()
    Charts.Add
    ActiveChart.ChartType = xlColumnClustered
    ActiveChart.SetSourceData Source:=Sheets("Sheet1").Range("A1:B3")
    ActiveChart.Location Where:=xlLocationAsObject, Name:="Sheet1"
End Sub
ここでは、セル範囲A1:B3に下図のようなグラフの元データが入力されているものとし、Sheet1の埋め込みグラフとして作成しました。 記録されたコードの先頭にある「Charts.Add」は、Chartsコレクションに新しいグラフ(Chart)を追加せよという命令で、Worksheets.Addと似ています。 ここで使用したChartsコレクションとは、グラフシートのコレクションです。 試しに「Charts.Add」だけを実行すると、新しいグラフシートが作成されます。 マクロ記録では、まず新しいグラフシートを挿入し、そこに指定したセル範囲からグラフを作り、最後にグラフシートを「ワークシート上の埋め込みグラフ」に移動しています。 最後の .Location Where:=xlLocationAsObject, Name:="Sheet1" が移動している箇所です。 もちろんこのコードでもワークシート上に埋め込みグラフを作成できますが、いささか冗長です。 ワークシート上の埋め込みグラフを作成するには、次のようにChartObjectオブジェクトを使う方が便利でしょう。ChartObjectオブジェクトは、ワークシート上の埋め込みグラフを表すオブジェクトです。
Sub Sample1()
    ActiveSheet.ChartObjects.Add 30, 50, 300, 200
End Sub
上記のコードは、アクティブシートに埋め込みグラフを挿入します。 ChartObjectsコレクションのAddメソッドでは、必ず4つの引数を指定しなければなりません。 引数はそれぞれ、埋め込みグラフの「左位置,上位置,横幅,高さ」を表しています。 続いて、グラフの種類や、グラフの元になるセル範囲などを指定します。
Sub Sample2()
    ActiveSheet.ChartObjects.Add 30, 50, 300, 200
    ActiveSheet.ChartObjects(1).Chart.ChartType = xlColumnClustered
    ActiveSheet.ChartObjects(1).Chart.SetSourceData Source:=Range("A1:B3")
End Sub
上記のマクロでは「ChartObjects(1)」のように、ワークシート上にある1番目のグラフを特定しています。 挿入したグラフを確実に指定するには、Addメソッドの返り値をオブジェクト変数に格納するか、次のようにWithステートメントを使うといいでしょう。
Sub Sample3()
    With ActiveSheet.ChartObjects.Add(30, 50, 300, 200).Chart
        .ChartType = xlColumnClustered
        .SetSourceData Source:=Range("A1:B3")
    End With
End Sub
なお、次のようにすると、セルとリンクしていないグラフを作成することも可能です。
Sub Sample4()
    With ActiveSheet.ChartObjects.Add(30, 50, 300, 200).Chart
        .ChartType = xlColumnClustered
        With .SeriesCollection.NewSeries
            .Values = "={30,40,50}"
            .Name = "Sample"
            .Xvalues = "={""東京"",""横浜"",""大阪""}"
        End With
    End With
End Sub
Valuesプロパティにはグラフの元になる数値を配列で指定し、Xvaluesプロパティには項目軸に表示する文字列を指定します。