Excel VBA グラフの作成

スポンサーリンク

グラフを作成する方法

Excelで作成できるグラフは、グラフシートに作成するグラフとワークシート上に作成する埋め込みグラフの2種類あります。

グラフシートのグラフは、ブック内のグラフシートの集まりであるCharts【チャーツ】コレクションのメンバーでありChart【チャート】オブジェクトとして扱われます。

埋め込みグラフは、すべての埋め込みグラフの集まりであるChartObjects【チャートオブジェクツ】コレクションのメンバーでありChartObject【チャートオブジェクト】オブジェクトとして扱われます。ChartObject【チャートオブジェクト】オブジェクトは埋め込みグラフのグラフ本体であるChart【チャート】オブジェクトのコンテナ(入れ物)として機能します。

グラフを作成するメソッド一覧

メソッド内容
Charts.Add
【チャーツ.アド】
ブック内にグラフシートを追加します。
ChartObjects.Add
【チャートオブジェクツ.アド】
ワークシートに埋め込みグラフを作成します。
AddChart
【アドチャート】
図形の集まりを表すShapes【シェイプス】コレクション
で、定形の埋め込みグラフを作成します。

グラフを参照するプロパティや操作するメソッド一覧

プロパティ・メソッド内容
Chartsプロパティ
【チャーツ】
作成済みグラフシートの
Chart【チャート】オブジェクトを取得します。
SetSourceDataメソッド
【セットソースデータ】
グラフのデータ範囲を指定します。

Charts.Add【チャーツアド】メソッド

ブック内にグラフシートを追加するには、Charts【チャーツ】コレクションのAdd【アド】メソッドを使用します。新しくグラフシートを追加しChart【チャート】オブジェクトを返します。

Charts.Add【チャーツアド】メソッドの書式と設定値(引数)の説明

[]内は省略可能です。
オブジェクト.Add( [Before, After, Count] )

  • オブジェクト(必須)
    Charts【チャーツ】コレクションを指定します。
  • Before【ビフォア】(省略可)
    指定したシートの前にシートを追加します。
  • After【アフター】(省略可)
    指定したシートの後にシートを追加します。
  • Count【カウント】(省略可)
    追加するグラフシートの数を指定します。
    省略した場合は1シートになります。

※引数Beforeと引数Afterは同時に指定できません。省略した場合は、アクティブシートの前に挿入されます。追加するグラフシートの他にシートが1枚しかない場合は引数Afterを指定しても手前の追加されます。


Charts【チャーツ】プロパティ

作成済みグラフシートのChart【チャート】オブジェクトを取得するには、Charts【チャーツ】プロパティを使用します。

Charts【チャーツ】プロパティの書式と設定値(引数)の説明

Charts( Index )

  • Index【インデックス】(必須)
    グラフシートを左から数えたインデックス番号、またはグラフシートのシート名を指定します。

※1つのグラフシートであるChart【チャート】オブジェクトは、ブック内のすべてのシートの集まりであるSheetsコレクションのメンバーでもあります。そのため「 Sheets( Index ) 」でもChart【チャート】オブジェクトを参照することができます。


SetSourceData【セットソースデータ】メソッド

グラフのデータ範囲を指定するには、Chart【チャート】オブジェクトのSetSourceData【セットソースデータ】メソッドを使用します。

SetSourceData【セットソースデータ】メソッドの書式と設定値(引数)の説明

[]内は省略可能です。
オブジェクト.SetSourceData( Source[, PlotBy ])

  • オブジェクト(必須)
    Chart【チャート】オブジェクトを指定します。
  • Source【ソース】(必須)
    グラフのデータの元となるセル範囲を指定します。
  • PlotBy【プロットバイ】(省略可)
    グラフに表示するデータの系列をxlRowCol列挙型の定数で指定します。省略した場合は、データ範囲の項目の行数が項目の列数より多い場合は列方向となり、同数または、少ない場合は、行方向となります。

    xlRowCol列挙型の定数
    定数内容
    xlColumns列方向
    xlRows行方向

グラフシートを追加してグラフを作成するコード例

Sub シートグラフ()
 With Charts.Add(After:=Sheets("売上"))
.Name = "売上グラフ"
.SetSourceData Sheets("売上").Range("A1:E5")
End With
End Sub

実行前

実行結果


ChartObjects.Add【チャートオブジェクツアド】メソッド

ワークシートに埋め込みグラフを作成するには、ChartObjects【チャートオブジェクツ】コレクションのAdd【アド】メソッドを使用します。新しい埋め込みグラフを作成してChartObject【チャートオブジェクト】オブジェクトを返します。

ChartObject【チャートオブジェクト】オブジェクトはグラフエリアを表し、グラフの大きさや外観を操作します。グラフ自体を操作するにはChartObject【チャートオブジェクト】オブジェクトのChart【チャート】プロパティを使用してChart【チャート】オブジェクトを取得して操作します。

ChartObjects.Add【チャートオブジェクツアド】メソッドの書式と設定値(引数)の説明

オブジェクト.Add( Left, Top, Width, Height )

  • オブジェクト(必須)
    ChartObjects【チャートオブジェクツ】コレクションを指定します。
  • Left【レフト】(必須)
    埋め込みグラフの左端位置をポイント単位で指定します。
  • Top【トップ】(必須)
    埋め込みグラフの上端位置をポイント単位で指定します。
  • Width【ワイズ】(必須)
    埋め込みグラフの幅をポイント単位で指定します。
  • Height【ハイト】(必須)
    埋め込みグラフの高さをポイント単位で指定します。

作成した埋め込みグラフは、図形オブジェクトでもあるためShapeオブジェクトやShapeRangeコレクションとして取得できます。埋め込みグラフの位置や大きさはShape【シェイプ】オブジェクトの位置やサイズを変更するのと同じ要領で変更します。

埋め込みグラフを作成するコード例

Sub 埋め込みグラフ()
Dim R As Range
Set R = Range("A7:E14")
With Sheets("売上").ChartObjects.Add(R.Left, R.Top, R.Width, R.Height)
.Name = "売上グラフ"
.Chart.SetSourceData Range("A1:E5")
End With
End Sub

実行結果


AddChart【アドチャート】メソッド

Excel2007以降はShapes【シェイプス】コレクションのAddChart【アドチャート】メソッドでも埋め込みグラフが作成できます。

AddChart【アドチャート】メソッドの書式と設定値(引数)の説明

[]内は省略可能です。
オブジェクト.AddChart( [type, Left, Top, Width, Height] )

  • オブジェクト(必須)
    Shapes【シェイプス】コレクションを指定します。
  • type【タイプ】(省略可)
    XlChartTypeの列挙型の定数、または値でグラフの種類を選択します。省略した場合は既定の縦棒グラフになります。

    XlChartTypeの列挙型
    定数説明
    xlXYScatter-4169散布図
    xlRadar-4151レーダー
    xlDoughnut-4120ドーナツ
    xl3DPie-41023-D 円
    xl3DLine-41013-D 折れ線
    xl3DColumn-41003-D 縦棒
    xl3DArea-40983-D 面
    xlArea1分野
    xlLine4折れ線
    xlPie5
    xlBubble15バブル
    xlColumnClustered51集合縦棒
    xlColumnStacked52積み上げ縦棒
    xlColumnStacked10053100% 積み上げ縦棒
    xl3DColumnClustered543-D 集合縦棒
    xl3DColumnStacked553-D 積み上げ縦棒
    xl3DColumnStacked100563-D 100% 積み上げ縦棒
    xlBarClustered57集合横棒
    xlBarStacked58積み上げ横棒
    xlBarStacked10059100% 積み上げ横棒
    xl3DBarClustered603-D 集合横棒
    xl3DBarStacked613-D 積み上げ横棒
    xl3DBarStacked100623-D 100% 積み上げ横棒
    xlLineStacked63積み上げ折れ線
    xlLineStacked10064100% 積み上げ折れ線
    xlLineMarkers65マーカー付き折れ線
    xlLineMarkersStacked66マーカー付き積み上げ折れ線
    xlLineMarkersStacked10067マーカー付き 100% 積み上げ折れ線
    xlPieOfPie68補助円グラフ付き円
    xlPieExploded69分割円
    xl3DPieExploded70分割 3-D 円
    xlBarOfPie71補助縦棒グラフ付き円
    xlXYScatterSmooth72平滑線付き散布図
    xlXYScatterSmoothNoMarkers73平滑線付き散布図 (データ マーカーなし)
    xlXYScatterLines74折れ線付き散布図
    xlXYScatterLinesNoMarkers75折れ線付き散布図 (データ マーカーなし)
    xlAreaStacked76積み上げ面
    xlAreaStacked10077100% 積み上げ面
    xl3DAreaStacked783-D 積み上げ面
    xl3DAreaStacked10079100% 積み上げ面
    xlDoughnutExploded80分割ドーナツ
    xlRadarMarkers81データ マーカー付きレーダー
    xlRadarFilled82塗りつぶしレーダー
    xlSurface833-D 表面
    xlSurfaceWireframe843-D 表面 (ワイヤーフレーム)
    xlSurfaceTopView85表面 (トップ ビュー)
    xlSurfaceTopViewWireframe86表面 (トップ ビュー – ワイヤーフレーム)
    xlBubble3DEffect873-D 効果付きバブル
    xlStockHLC88高値 – 安値 – 終値
    xlStockOHLC89始値 – 高値 – 安値 – 終値
    xlStockVHLC90出来高 – 高値 – 安値 – 終値
    xlStockVOHLC91出来高 – 始値 – 高値 – 安値 – 終値
    xlCylinderColClustered92集合円錐型縦棒
    xlCylinderColStacked93積み上げ円錐型縦棒
    xlCylinderColStacked10094100% 積み上げ円柱型縦棒
    xlCylinderBarClustered95集合円柱型横棒
    xlCylinderBarStacked96積み上げ円柱型横棒
    xlCylinderBarStacked10097100% 積み上げ円柱型横棒
    xlCylinderCol983-D 円柱型縦棒
    xlConeColClustered99集合円錐型縦棒
    xlConeColStacked100積み上げ円錐型縦棒
    xlConeColStacked100101100% 積み上げ円錐型縦棒
    xlConeBarClustered102集合円錐型横棒
    xlConeBarStacked103積み上げ円錐型横棒
    xlConeBarStacked100104100% 積み上げ円錐型横棒
    xlConeCol1053-D 円錐型縦棒
    xlPyramidColClustered106集合ピラミッド型縦棒
    xlPyramidColStacked107積み上げピラミッド型縦棒
    xlPyramidColStacked100108100% 積み上げピラミッド型横棒
    xlPyramidBarClustered109集合ピラミッド型横棒
    xlPyramidBarStacked110積み上げピラミッド型横棒
    xlPyramidBarStacked100111100% 積み上げピラミッド型横棒
    xlPyramidCol1123-D ピラミッド型縦棒
  • Left【レフト】(省略可)
    埋め込みグラフの左端位置をポイント単位で指定します。
  • Top【トップ】(省略可)
    埋め込みグラフの上端位置をポイント単位で指定します。
  • Width【ワイズ】(省略可)
    埋め込みグラフの幅をポイント単位で指定します。
  • Height【ハイト】(省略可)
    埋め込みグラフの高さをポイント単位で指定します。

作成した埋め込みグラフは、図形オブジェクトでもあるためShapeオブジェクトやShapeRangeコレクションとして取得できます。

埋め込みグラフの位置や大きさはShape【シェイプ】オブジェクトの位置やサイズを変更するのと同じ要領で変更します。すべての引数を省略した場合は、既定の位置に既定の大きさで作成されます。

3Dタイプの埋め込みグラフを作成するコード例

Sub 埋め込みグラフ2()
Dim R As Range
Set R = Range("A7:E14")
With Sheets("売上").Shapes.AddChart(xl3DColumn, R.Left, R.Top, R.Width, R.Height)
.Name = "売上グラフ"
.Chart.SetSourceData Range("A1:E5")
End With
End Sub

実行結果


埋め込みグラフのサイズや位置を変更する方法

埋め込みグラフは図形オブジェクトでもあるため、図形オブジェクトとしてサイズや位置の変更ができます。例えば、上記の例の場合、「ActiveSheet.Shapes(“売上グラフ”)」で、埋め込みグラフのShapeオブジェクトを取得すると図形として、ShapeオブジェクトやShapeRangeコレクションのIncrement【インクリメント】、Scale【スケール】メソッドが使用できます。


以上で、グラフの作成方法についての解説を終了します。ありがとうございました。

スポンサーリンク

関連記事・広告