グラフの作成/操作 [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の作成
ワークブックのイベント
[その他]
その他の操作まとめ
エクセル講座のクイックリンク
関連記事
プチモンテ ※この記事を書いた人
![]() | |
![]() | 💻 ITスキル・経験 サーバー構築からWebアプリケーション開発。IoTをはじめとする電子工作、ロボット、人工知能やスマホ/OSアプリまで分野問わず経験。 画像処理/音声処理/アニメーション、3Dゲーム、会計ソフト、PDF作成/編集、逆アセンブラ、EXE/DLLファイルの書き換えなどのアプリを公開。詳しくは自己紹介へ |
| 🎵 音楽制作 BGMは楽器(音源)さえあれば、何でも制作可能。歌モノは主にロック、バラード、ポップスを制作。歌詞は抒情詩、抒情的な楽曲が多い。楽曲制作は🔰2023年12月中旬 ~ | |









