ホーム > カテゴリ > Excel・VBA >

グラフの作成/操作 [ExcelのVBA]

VBAではグラフを新規シートに表示する「グラフシート」の作成及び操作は昔から可能ですが、シートの中にグラフを埋め込む「埋め込みグラフ」はExcel2007から作成/操作が可能です。

また、グラフ全体の「チャートエリア(ChartAreaプロパティ)」、グラフのデータ部分の「プロットエリア(PlotAreaプロパティ)」の操作はVBAで可能ですが、X軸、Y軸のエリア(Axesプロパティ)の一部は開発中のようです。

VBAでグラフは
・基本的な部分は操作可能
・詳細な部分は操作が出来ない場合がある(開発中)

事前準備

図のようにエクセルに値を入力してください。

データを入力するのが大変な方は下記からダウンロードできます。
excel_vba_54.xlsx 10.3 KB (10,637 バイト)

グラフを作成する

グラフシート

グラフシートのグラフを作成します。グラフシートとは新規シートにグラフを作成します。

Private Sub CommandButton1_Click()
 Dim Chart1 As Chart
 
 ' グラフを作成する
 Set Chart1 = Charts.Add(Before:=ActiveSheet)
 Chart1.SetSourceData Worksheets("Sheet1").Range("$B$3:$E$15,$D$3:$E$15")
 
 ' グラフの種類を集合縦棒にする
 Chart1.ChartType = xlColumnClustered
End Sub

[結果]

埋め込みグラフ(Excel2007/2010)

Shapes.AddChartで埋め込みグラフを作成します。埋め込みグラフとはシート内にグラフを作成します。

Private Sub CommandButton1_Click()
  ' グラフを作成する
  ' ※xlColumnClusteredは集合縦棒
  ActiveSheet.Shapes.AddChart(xlColumnClustered).Select
  ActiveChart.SetSourceData Source:=Range("Sheet1!$B$3:$B$15,Sheet1!$D$3:$E$15")
  
  ' グラフのタイトル
  ActiveChart.HasTitle = True
  ActiveChart.ChartTitle.Text = "グラフのタイトル"
End Sub

[結果]

埋め込みグラフ(Excel2013以降)

Shapes.AddChart2で埋め込みグラフを作成します。Excel2013から使用することが出来ます。Excel2016以降も恐らく使用できるはずです。

Private Sub CommandButton1_Click()
  ' グラフを作成する
  ' ※-1は規定のスタイル
  ' ※xlColumnClusteredは集合縦棒
  ActiveSheet.Shapes.AddChart2(-1, xlColumnClustered).Select
  ActiveChart.SetSourceData Source:=Range("Sheet1!$B$3:$B$15,Sheet1!$D$3:$E$15")
  
  ' グラフのタイトル
  ActiveChart.HasTitle = True
  ActiveChart.ChartTitle.Text = "グラフのタイトル"
End Sub

[結果]

埋め込みグラフはExcel2007/2010では「Shapes.AddChart」で作成します。Excel2013以降は「Shapes.AddChart2」でも作成可能です。双方のグラフを見て頂くとわかると思いますが、「Shapes.AddChart2」で作成したグラフの方が綺麗で見やすいです。

また、AddChartは「凡例(はんれい)」が表示されて、AddChart2は凡例が非表示ですので注意して下さい。(初期設定)

グラフオブジェクトの参照

グラフのオブジェクトの参照方法です。

  ' アクティブなグラフを参照 
  ActiveChart.プロパティ
  ' グラフ番号で参照 
  Application.Charts(1).プロパティ
  ' Shapes番号で参照
  Worksheets(1).Shapes(1).Chart.プロパティ

グラフの操作

グラフの「タイトル、凡例、位置、サイズ、データ範囲、種類、X軸、Y軸、チャートエリア、プロットエリア」の設定の変更などの操作方法です。

タイトル

グラフのタイトルを表示します。

Private Sub CommandButton1_Click()
  ' グラフのタイトル
  ActiveChart.HasTitle = True
  ActiveChart.ChartTitle.Text = "グラフのタイトル"
End Sub

[結果]

※HasTitleをFalseにするとタイトルが非表示になります。

凡例

グラフの凡例を左に表示します。

Private Sub CommandButton1_Click()
  ' グラフの凡例
  ActiveChart.HasLegend = True
  ActiveChart.Legend.Position = xlLegendPositionLeft
End Sub

[結果]

※HasLegend をFalseにすると凡例が非表示になります。

次はLegend.Positionの定数の一覧です。

xlLegendPositionBottomグラフの下
xlLegendPositionCornerグラフの輪郭線の右上隅
xlLegendPositionCustom任意の位置
xlLegendPositionLeftグラフの左
xlLegendPositionRightグラフの右
xlLegendPositionTopグラフの上

位置とサイズ

グラフの位置とサイズを変更します。

Private Sub CommandButton1_Click()
  ' グラフの位置とサイズの変更
  ActiveChart.ChartArea.Left = 0
  ActiveChart.ChartArea.Top = 0
  ActiveChart.ChartArea.Width = 200
  ActiveChart.ChartArea.Height = 200
End Sub

[結果]

データ範囲

グラフのデータ範囲を変更します。

Private Sub CommandButton1_Click()
  ' グラフのデータ範囲の変更
  ActiveChart.SetSourceData Source:=Range("Sheet1!$B$3:$B$15,Sheet1!$D$3:$D$15")
End Sub

[結果]

種類

グラフの種類を「3-D 面」に変更します。

Private Sub CommandButton1_Click()
  ' グラフの種類の変更
  ActiveChart.ChartType = xl3DArea
End Sub

[結果]

※右側部分に何故か凡例が表示されています。恐らくバグでしょう^^;

次はChartTypeの定数の一覧です。

xl3DArea3-D 面
xl3DAreaStacked3-D 積み上げ面
xl3DAreaStacked100100% 積み上げ面
xl3DBarClustered3-D 集合横棒
xl3DBarStacked3-D 積み上げ横棒
xl3DBarStacked1003-D 100% 積み上げ横棒
xl3DColumn3-D 縦棒
xl3DColumnClustered3-D 集合縦棒
xl3DColumnStacked3-D 積み上げ縦棒
xl3DColumnStacked1003-D 100% 積み上げ縦棒
xl3DLine3-D 折れ線
xl3DPie3-D 円
xl3DPieExploded分割 3-D 円
xlArea
xlAreaStacked積み上げ面
xlAreaStacked100100% 積み上げ面
xlBarClustered集合横棒
xlBarOfPie補助縦棒グラフ付き円
xlBarStacked積み上げ横棒
xlBarStacked100100% 積み上げ横棒
xlBubbleバブル
xlBubble3DEffect3-D 効果付きバブル
xlColumnClustered集合縦棒
xlColumnStacked積み上げ縦棒
xlColumnStacked100100% 積み上げ縦棒
xlConeBarClustered集合円錐型横棒
xlConeBarStacked積み上げ円錐型横棒
xlConeBarStacked100100% 積み上げ円錐型横棒
xlConeCol3-D 円錐型縦棒
xlConeColClustered集合円錐型縦棒
xlConeColStacked積み上げ円錐型縦棒
xlConeColStacked100100% 積み上げ円錐型縦棒
xlCylinderBarClustered集合円柱型横棒
xlCylinderBarStacked積み上げ円柱型横棒
xlCylinderBarStacked100100% 積み上げ円柱型横棒
xlCylinderCol3-D 円柱型縦棒
xlCylinderColClustered集合円錐型縦棒
xlCylinderColStacked積み上げ円錐型縦棒
xlCylinderColStacked100100% 積み上げ円柱型縦棒
xlDoughnutドーナツ
xlDoughnutExploded分割ドーナツ
xlLine折れ線
xlLineMarkersマーカー付き折れ線
xlLineMarkersStackedマーカー付き積み上げ折れ線
xlLineMarkersStacked100マーカー付き 100% 積み上げ折れ線
xlLineStacked積み上げ折れ線
xlLineStacked100100% 積み上げ折れ線
xlPie
xlPieExploded分割円
xlPieOfPie補助円グラフ付き円
xlPyramidBarClustered集合ピラミッド型横棒
xlPyramidBarStacked積み上げピラミッド型横棒
xlPyramidBarStacked100100% 積み上げピラミッド型横棒
xlPyramidCol3-D ピラミッド型縦棒
xlPyramidColClustered集合ピラミッド型縦棒
xlPyramidColStacked積み上げピラミッド型縦棒
xlPyramidColStacked100100% 積み上げピラミッド型横棒
xlRadarレーダー
xlRadarFilled塗りつぶしレーダー
xlRadarMarkersデータ マーカー付きレーダー
xlStockHLC高値 - 安値 - 終値
xlStockOHLC始値 - 高値 - 安値 - 終値
xlStockVHLC出来高 - 高値 - 安値 - 終値
xlStockVOHLC出来高 - 始値 - 高値 - 安値 - 終値
xlSurface3-D 表面
xlSurfaceTopView表面 (トップ ビュー)
xlSurfaceTopViewWireframe表面 (トップ ビュー - ワイヤーフレーム)
xlSurfaceWireframe3-D 表面 (ワイヤーフレーム)
xlXYScatter散布図
xlXYScatterLines折れ線付き散布図
xlXYScatterLinesNoMarkers折れ線付き散布図 (データ マーカーなし)
xlXYScatterSmooth平滑線付き散布図
xlXYScatterSmoothNoMarkers平滑線付き散布図 (データ マーカーなし)

X/Y軸のタイトル

グラフのX/Y軸のタイトルを設定します。

Private Sub CommandButton1_Click()
  ' X/Y軸のタイトルの設定
  ' Axesの引数の値はプレリリース版のため将来変更される可能性があります。
  ActiveChart.Axes(xlCategory, xlPrimary).HasTitle = True
  ActiveChart.Axes(xlCategory, xlPrimary).AxisTitle.Text = "X軸のタイトル"

  ActiveChart.Axes(xlValue, xlPrimary).HasTitle = True
  ActiveChart.Axes(xlValue, xlPrimary).AxisTitle.Text = "Y軸タイトル"
End Sub

[結果]

※HasTitleをFalseにすると非表示になります。

チャートエリア

グラフのチャートエリアの枠線、フォントサイズを変更します。

Private Sub CommandButton1_Click()
  ' チャートエリアの設定
  ActiveChart.ChartArea.Border.Color = vbRed
  ActiveChart.ChartArea.Font.Size = 12
End Sub

[結果]

プロットエリア

グラフのプロットエリアの背景色を変更します。

Private Sub CommandButton1_Click()
  ' プロットエリアの操作
  ActiveChart.PlotArea.Interior.Color = vbGreen
End Sub

[結果]

VBAの固有操作

[セルの操作]
セルの値/計算式を設定する
セルのフォントを設定する
セルの背景色/網掛けを設定する
セルの文字配置を設定する
セルの表示形式を設定する
セルに罫線を設定する
セルの選択/コピー/貼り付け/切り取り/削除/クリア
セルの結合/結合の解除をする
セルにコメントを追加/削除する
シートの保護とセルのロック解除をする
セルの値をソートする

[テーブル/グラフ/ピボットテーブル]
テーブルの作成/操作
グラフの作成/操作
ピボットテーブルの作成/操作

[ワークシート]
シートの追加/移動/コピー/削除/表示/印刷
ワークシートのイベント

[ワークブック]
ブックを開く/追加/上書き/名前保存/PDFの作成
ワークブックのイベント

[その他]
その他の操作まとめ

エクセル講座のクイックリンク

ホーム 新機能 基本(初級) 基本(中級) 基本(上級) 関数 マクロ VBA TIPS





関連記事



公開日:2015年07月21日 最終更新日:2015年07月23日
記事NO:01226