【VBA】グラフ作成/グラフシートの追加を行う

これで楽に!?VBA活用

こんにちは、Ryoです。
Excelを扱う中でグラフを作成することはかなり多いと思いますが、VBAでもAddメソッドやChartTypeプロパティなどでグラフ作成やグラフシートの追加を行うことができますので、今回はその内容について書いていきます。

スポンサーリンク

1.サンプル概要

Sheet1にサンプルとして作成した表に対し、グラフの作成とグラフシートの追加を行っていきます。

グラフの種類を「集合縦棒」として実行した結果が以下になります。作成するグラフの位置は指定できるので、表の中央付近で下側に表示させています。

次は同じ表を指定し、「グラフシート」を作成します。

以上がサンプル概要になります。

2.サンプルコード

◆グラフの作成

Sub Sample1()

 'グラフを作成する
  With Worksheets("Sheet1").ChartObjects. _
      Add(50, 110, 250, 180).Chart
     'セルA2を起点とする表のデータ範囲を取得
     .SetSourceData Range("A2").CurrentRegion
     'グラフ種類を「集合縦棒」として設定
     .ChartType = xlColumnClustered
  End With

End Sub

≪Addメソッドの構文≫

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

≪SetSourceDataメソッドの構文≫

オブジェクト.SetSourceData(Source, PlotBy)

≪ChartTypeプロパティの構文≫

オブジェクト.ChartType = expression

AddメソッドはオブジェクトにChartObjectsオブジェクトを指定してグラフを作成することができるもので引数のLeftはグラフ左端の位置、引数Topはグラフ上端の位置をワークシート左上端からの距離をポイント単位で指定し、引数Widthと引数Heightはグラフの幅と高さを指定するものです。

SetSourceDataメソッドは引数Sourceにグラフの元となるデータを指定します。(PlotByはプロット方向を指定するものです)

ChartTypeプロパティについてはグラフの種類をXlChartTypeクラスの定数で指定するもので、以下になります。

名前内容
xl3DArea-40983-D 面
xl3DAreaStacked783-D 積み上げ面
xl3DAreaStacked10079100% 積み上げ面
xl3DBarClustered603-D 集合横棒
xl3DBarStacked613-D 積み上げ横棒
xl3DBarStacked100623-D 100% 積み上げ横棒
xl3DColumn-41003-D 縦棒
xl3DColumnClustered543-D 集合縦棒
xl3DColumnStacked553-D 積み上げ縦棒
xl3DColumnStacked100563-D 100% 積み上げ縦棒
xl3DLine-41013-D 折れ線
xl3DPie-41023-D 円
xl3DPieExploded70分割 3-D 円
xlArea1分野
xlAreaStacked76積み上げ面
xlAreaStacked10077100% 積み上げ面
xlBarClustered57集合横棒
xlBarOfPie71補助縦棒グラフ付き円
xlBarStacked58積み上げ横棒
xlBarStacked10059100% 積み上げ横棒
xlBubble15バブル
xlBubble3DEffect873-D 効果付きバブル
xlColumnClustered51集合縦棒
xlColumnStacked52積み上げ縦棒
xlColumnStacked10053100% 積み上げ縦棒
xlConeBarClustered102集合円錐型横棒
xlConeBarStacked103積み上げ円錐型横棒
xlConeBarStacked100104100% 積み上げ円錐型横棒
xlConeCol1053-D 円錐型縦棒
xlConeColClustered99集合円錐型縦棒
xlConeColStacked100積み上げ円錐型縦棒
xlConeColStacked100101100% 積み上げ円錐型縦棒
xlCylinderBarClustered95集合円柱型横棒
xlCylinderBarStacked96積み上げ円柱型横棒
xlCylinderBarStacked10097100% 積み上げ円柱型横棒
xlCylinderCol983-D 円柱型縦棒
xlCylinderColClustered92集合円錐型縦棒
xlCylinderColStacked93積み上げ円錐型縦棒
xlCylinderColStacked10094100% 積み上げ円柱型縦棒
xlDoughnut-4120ドーナツ
xlDoughnutExploded80分割ドーナツ
xlLine4折れ線
xlLineMarkers65マーカー付き折れ線
xlLineMarkersStacked66マーカー付き積み上げ折れ線
xlLineMarkersStacked10067マーカー付き 100% 積み上げ折れ線
xlLineStacked63積み上げ折れ線
xlLineStacked10064100% 積み上げ折れ線
xlPie5
xlPieExploded69分割円
xlPieOfPie68補助円グラフ付き円
xlPyramidBarClustered109集合ピラミッド型横棒
xlPyramidBarStacked110積み上げピラミッド型横棒
xlPyramidBarStacked100111100% 積み上げピラミッド型横棒
xlPyramidCol1123-D ピラミッド型縦棒
xlPyramidColClustered106集合ピラミッド型縦棒
xlPyramidColStacked107積み上げピラミッド型縦棒
xlPyramidColStacked100108100% 積み上げピラミッド型横棒
xlRadar-4151レーダー
xlRadarFilled82塗りつぶしレーダー
xlRadarMarkers81データ マーカー付きレーダー
xlRegionMap140マップ グラフ。
xlStockHLC88高値 – 安値 – 終値
xlStockOHLC89始値 – 高値 – 安値 – 終値
xlStockVHLC90出来高 – 高値 – 安値 – 終値
xlStockVOHLC91出来高 – 始値 – 高値 – 安値 – 終値
xlSurface833-D 表面
xlSurfaceTopView85表面 (トップ ビュー)
xlSurfaceTopViewWireframe86表面 (トップ ビュー – ワイヤーフレーム)
xlSurfaceWireframe843-D 表面 (ワイヤーフレーム)
xlXYScatter-4169散布図
xlXYScatterLines74折れ線付き散布図
xlXYScatterLinesNoMarkers75折れ線付き散布図 (データ マーカーなし)
xlXYScatterSmooth72平滑線付き散布図
xlXYScatterSmoothNoMarkers73平滑線付き散布図 (データ マーカーなし)

サンプルでは集合縦棒のxlColumnClusteredを指定していますが、上の表内の値を指定して.ChartType = 51の記述にしても同様の処理ができます。

◆グラフシートの追加

Sub Sample2()

  'グラフシートを追加する
  With Charts.Add(After:=Worksheets("Sheet1"))
     'ワークシート「Sheet1」のセルA2を起点とする
     '表のデータ範囲を取得
     .SetSourceData Worksheets("Sheet1"). _
      Range("A2").CurrentRegion
     'グラフ種類を「集合縦棒」として設定
     .ChartType = xlColumnClustered
  End With
  
End Sub

≪Chartsオブジェクトの構文≫

オブジェクト.Charts

≪Addメソッドの構文≫

オブジェクト.Add(Before, After, Count)

Chartsオブジェクト=グラフシートを表しますので、Addメソッドでグラフシートの作成を行っています。Addメソッドの引数Before/Afterは指定したシートの左側(=Before)、右側(=After)にグラフシートを作成するもので、引数Countは追加するChartオブジェクトを指定します。

サンプルでは「Sheet1」のデータを元にしてグラフシートを作成しています。処理の流れとしてはAddメソッドでからのグラフシート作成→データ指定→グラフ指定となります。

◆参考:グラフシートのカウント処理

ワークシートの数をカウントする際に「Worksheets.Count」を記述して使用しますが、この場合「グラフシートはカウントされません」のでグラフシートを含めてシート数を取得したい場合は「Sheets.Count」とすればOKです。

3.まとめ

VBAでデータ集計などを行う際にグラフとして出力したいケースは多々ありますので、グラフ作成やグラフシート追加の手段を知っておくと有用なケースが多いと思います。



今回サンプルとして紹介したようにグラフ出力するだけれあれば特に難しいこともありませんので、機会があればぜひご活用くださいませ。

以上、グラフ作成/グラフシートの追加を行う方法についてでした!今回の記事が何かの参考になれば幸いです。

Ryo

タイトルとURLをコピーしました