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 -4102 3-D 円
    xl3DLine -4101 3-D 折れ線
    xl3DColumn -4100 3-D 縦棒
    xl3DArea -4098 3-D 面
    xlArea 1 分野
    xlLine 4 折れ線
    xlPie 5
    xlBubble 15 バブル
    xlColumnClustered 51 集合縦棒
    xlColumnStacked 52 積み上げ縦棒
    xlColumnStacked100 53 100% 積み上げ縦棒
    xl3DColumnClustered 54 3-D 集合縦棒
    xl3DColumnStacked 55 3-D 積み上げ縦棒
    xl3DColumnStacked100 56 3-D 100% 積み上げ縦棒
    xlBarClustered 57 集合横棒
    xlBarStacked 58 積み上げ横棒
    xlBarStacked100 59 100% 積み上げ横棒
    xl3DBarClustered 60 3-D 集合横棒
    xl3DBarStacked 61 3-D 積み上げ横棒
    xl3DBarStacked100 62 3-D 100% 積み上げ横棒
    xlLineStacked 63 積み上げ折れ線
    xlLineStacked100 64 100% 積み上げ折れ線
    xlLineMarkers 65 マーカー付き折れ線
    xlLineMarkersStacked 66 マーカー付き積み上げ折れ線
    xlLineMarkersStacked100 67 マーカー付き 100% 積み上げ折れ線
    xlPieOfPie 68 補助円グラフ付き円
    xlPieExploded 69 分割円
    xl3DPieExploded 70 分割 3-D 円
    xlBarOfPie 71 補助縦棒グラフ付き円
    xlXYScatterSmooth 72 平滑線付き散布図
    xlXYScatterSmoothNoMarkers 73 平滑線付き散布図 (データ マーカーなし)
    xlXYScatterLines 74 折れ線付き散布図
    xlXYScatterLinesNoMarkers 75 折れ線付き散布図 (データ マーカーなし)
    xlAreaStacked 76 積み上げ面
    xlAreaStacked100 77 100% 積み上げ面
    xl3DAreaStacked 78 3-D 積み上げ面
    xl3DAreaStacked100 79 100% 積み上げ面
    xlDoughnutExploded 80 分割ドーナツ
    xlRadarMarkers 81 データ マーカー付きレーダー
    xlRadarFilled 82 塗りつぶしレーダー
    xlSurface 83 3-D 表面
    xlSurfaceWireframe 84 3-D 表面 (ワイヤーフレーム)
    xlSurfaceTopView 85 表面 (トップ ビュー)
    xlSurfaceTopViewWireframe 86 表面 (トップ ビュー – ワイヤーフレーム)
    xlBubble3DEffect 87 3-D 効果付きバブル
    xlStockHLC 88 高値 – 安値 – 終値
    xlStockOHLC 89 始値 – 高値 – 安値 – 終値
    xlStockVHLC 90 出来高 – 高値 – 安値 – 終値
    xlStockVOHLC 91 出来高 – 始値 – 高値 – 安値 – 終値
    xlCylinderColClustered 92 集合円錐型縦棒
    xlCylinderColStacked 93 積み上げ円錐型縦棒
    xlCylinderColStacked100 94 100% 積み上げ円柱型縦棒
    xlCylinderBarClustered 95 集合円柱型横棒
    xlCylinderBarStacked 96 積み上げ円柱型横棒
    xlCylinderBarStacked100 97 100% 積み上げ円柱型横棒
    xlCylinderCol 98 3-D 円柱型縦棒
    xlConeColClustered 99 集合円錐型縦棒
    xlConeColStacked 100 積み上げ円錐型縦棒
    xlConeColStacked100 101 100% 積み上げ円錐型縦棒
    xlConeBarClustered 102 集合円錐型横棒
    xlConeBarStacked 103 積み上げ円錐型横棒
    xlConeBarStacked100 104 100% 積み上げ円錐型横棒
    xlConeCol 105 3-D 円錐型縦棒
    xlPyramidColClustered 106 集合ピラミッド型縦棒
    xlPyramidColStacked 107 積み上げピラミッド型縦棒
    xlPyramidColStacked100 108 100% 積み上げピラミッド型横棒
    xlPyramidBarClustered 109 集合ピラミッド型横棒
    xlPyramidBarStacked 110 積み上げピラミッド型横棒
    xlPyramidBarStacked100 111 100% 積み上げピラミッド型横棒
    xlPyramidCol 112 3-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【スケール】メソッドが使用できます。


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

スポンサーリンク

関連記事・広告