グラフの作成/操作 [ExcelのVBA]
VBAではグラフを新規シートに表示する「グラフシート」の作成及び操作は昔から可能ですが、シートの中にグラフを埋め込む「埋め込みグラフ」はExcel2007から作成/操作が可能です。
また、グラフ全体の「チャートエリア(ChartAreaプロパティ)」、グラフのデータ部分の「プロットエリア(PlotAreaプロパティ)」の操作はVBAで可能ですが、X軸、Y軸のエリア(Axesプロパティ)の一部は開発中のようです。
・基本的な部分は操作可能
・詳細な部分は操作が出来ない場合がある(開発中)
事前準備
図のようにエクセルに値を入力してください。
データを入力するのが大変な方は下記からダウンロードできます。
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
[結果]
また、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の定数の一覧です。
xl3DArea | 3-D 面 |
xl3DAreaStacked | 3-D 積み上げ面 |
xl3DAreaStacked100 | 100% 積み上げ面 |
xl3DBarClustered | 3-D 集合横棒 |
xl3DBarStacked | 3-D 積み上げ横棒 |
xl3DBarStacked100 | 3-D 100% 積み上げ横棒 |
xl3DColumn | 3-D 縦棒 |
xl3DColumnClustered | 3-D 集合縦棒 |
xl3DColumnStacked | 3-D 積み上げ縦棒 |
xl3DColumnStacked100 | 3-D 100% 積み上げ縦棒 |
xl3DLine | 3-D 折れ線 |
xl3DPie | 3-D 円 |
xl3DPieExploded | 分割 3-D 円 |
xlArea | 面 |
xlAreaStacked | 積み上げ面 |
xlAreaStacked100 | 100% 積み上げ面 |
xlBarClustered | 集合横棒 |
xlBarOfPie | 補助縦棒グラフ付き円 |
xlBarStacked | 積み上げ横棒 |
xlBarStacked100 | 100% 積み上げ横棒 |
xlBubble | バブル |
xlBubble3DEffect | 3-D 効果付きバブル |
xlColumnClustered | 集合縦棒 |
xlColumnStacked | 積み上げ縦棒 |
xlColumnStacked100 | 100% 積み上げ縦棒 |
xlConeBarClustered | 集合円錐型横棒 |
xlConeBarStacked | 積み上げ円錐型横棒 |
xlConeBarStacked100 | 100% 積み上げ円錐型横棒 |
xlConeCol | 3-D 円錐型縦棒 |
xlConeColClustered | 集合円錐型縦棒 |
xlConeColStacked | 積み上げ円錐型縦棒 |
xlConeColStacked100 | 100% 積み上げ円錐型縦棒 |
xlCylinderBarClustered | 集合円柱型横棒 |
xlCylinderBarStacked | 積み上げ円柱型横棒 |
xlCylinderBarStacked100 | 100% 積み上げ円柱型横棒 |
xlCylinderCol | 3-D 円柱型縦棒 |
xlCylinderColClustered | 集合円錐型縦棒 |
xlCylinderColStacked | 積み上げ円錐型縦棒 |
xlCylinderColStacked100 | 100% 積み上げ円柱型縦棒 |
xlDoughnut | ドーナツ |
xlDoughnutExploded | 分割ドーナツ |
xlLine | 折れ線 |
xlLineMarkers | マーカー付き折れ線 |
xlLineMarkersStacked | マーカー付き積み上げ折れ線 |
xlLineMarkersStacked100 | マーカー付き 100% 積み上げ折れ線 |
xlLineStacked | 積み上げ折れ線 |
xlLineStacked100 | 100% 積み上げ折れ線 |
xlPie | 円 |
xlPieExploded | 分割円 |
xlPieOfPie | 補助円グラフ付き円 |
xlPyramidBarClustered | 集合ピラミッド型横棒 |
xlPyramidBarStacked | 積み上げピラミッド型横棒 |
xlPyramidBarStacked100 | 100% 積み上げピラミッド型横棒 |
xlPyramidCol | 3-D ピラミッド型縦棒 |
xlPyramidColClustered | 集合ピラミッド型縦棒 |
xlPyramidColStacked | 積み上げピラミッド型縦棒 |
xlPyramidColStacked100 | 100% 積み上げピラミッド型横棒 |
xlRadar | レーダー |
xlRadarFilled | 塗りつぶしレーダー |
xlRadarMarkers | データ マーカー付きレーダー |
xlStockHLC | 高値 - 安値 - 終値 |
xlStockOHLC | 始値 - 高値 - 安値 - 終値 |
xlStockVHLC | 出来高 - 高値 - 安値 - 終値 |
xlStockVOHLC | 出来高 - 始値 - 高値 - 安値 - 終値 |
xlSurface | 3-D 表面 |
xlSurfaceTopView | 表面 (トップ ビュー) |
xlSurfaceTopViewWireframe | 表面 (トップ ビュー - ワイヤーフレーム) |
xlSurfaceWireframe | 3-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の作成
ワークブックのイベント
[その他]
その他の操作まとめ