Chart / ChartObject

Worksheet

1. はじめに

Excelではグラフを作成し、データの視覚化を行えます。
VBAからグラフを操作する際、2つの重要なオブジェクトが登場します。

  • ChartObject:ワークシートに埋め込まれた「グラフの枠」や「グラフのコンテナ」となるオブジェクト。
  • Chart:実際のグラフの中身、つまりグラフのデータ系列や軸、タイトルなどの構造を持つオブジェクト。

この2つは密接に関連しつつも異なる役割を持ち、VBAでグラフを扱う際に理解が不可欠です。


2. ChartObjectとは?

  • ChartObjectは、ワークシート上に配置されている埋め込みグラフの「枠」や「容器」を表します。
  • サイズ(幅・高さ)や位置(左端・上端)など、グラフの「外枠」の操作が可能です。
  • Worksheet.ChartObjectsコレクションに含まれます。
  • ChartObjectの中にChartオブジェクトが格納されています。

主なプロパティ

プロパティ説明
Nameグラフオブジェクト名
Leftシート内の左端の位置(ポイント)
Topシート内の上端の位置(ポイント)
Widthグラフ枠の幅(ポイント)
Heightグラフ枠の高さ(ポイント)
Visibleグラフの表示・非表示
Chart内包する実際のグラフオブジェクト

主なメソッド

メソッド説明
Activateグラフオブジェクトを選択・アクティブ化
Copyグラフオブジェクトをコピー
Deleteグラフオブジェクトを削除
Duplicateグラフオブジェクトの複製
Selectグラフオブジェクトの選択

3. Chartとは?

  • Chartは、グラフの「中身」の構造を表すオブジェクトです。
  • データ系列、軸、タイトル、凡例、データラベルなど、グラフの詳細な設定を管理。
  • ChartObject.Chartプロパティで取得します。
  • グラフシート(チャート専用のシート)に直接存在する場合もChartオブジェクトとして扱われます。

主なプロパティ

プロパティ説明
ChartTypeグラフの種類(例:棒グラフ、折れ線グラフ)
HasTitleグラフタイトルの有無
ChartTitleグラフタイトルオブジェクト
SeriesCollectionデータ系列コレクション
Axes軸オブジェクトコレクション
Legend凡例オブジェクト

主なメソッド

メソッド説明
SetSourceDataグラフの元データ範囲を設定
Refreshグラフを更新
ApplyLayoutグラフのレイアウトを適用
Exportグラフを画像として保存

4. ChartObjectの取得と操作例

4-1. 既存グラフの操作

Sub ChartObject操作例()
Dim ws As Worksheet
Set ws = ThisWorkbook.Worksheets("Sheet1")

Dim co As ChartObject
Set co = ws.ChartObjects(1) ' 1番目のグラフオブジェクト取得

' グラフ枠のサイズ変更
co.Width = 400
co.Height = 300

' 位置変更
co.Left = 100
co.Top = 50

' グラフをアクティブ化
co.Activate
End Sub

4-2. 新規グラフの追加

Sub 新規ChartObject追加()
Dim ws As Worksheet
Set ws = Worksheets("Sheet1")

Dim co As ChartObject
Set co = ws.ChartObjects.Add(Left:=50, Top:=50, Width:=400, Height:=300)

co.Name = "MyChart"

' グラフの種類設定
co.Chart.ChartType = xlColumnClustered

' 元データの指定
co.Chart.SetSourceData Source:=ws.Range("A1:B5")
End Sub

5. Chartオブジェクトの操作例

5-1. グラフの種類変更

Sub グラフ種類変更()
Dim co As ChartObject
Set co = Worksheets("Sheet1").ChartObjects("MyChart")

co.Chart.ChartType = xlPie
End Sub

5-2. グラフタイトルの設定

Sub グラフタイトル設定()
Dim co As ChartObject
Set co = Worksheets("Sheet1").ChartObjects(1)

co.Chart.HasTitle = True
co.Chart.ChartTitle.Text = "売上推移"
End Sub

5-3. データ系列の操作

Sub データ系列操作()
Dim co As ChartObject
Set co = Worksheets("Sheet1").ChartObjects(1)

Dim series As Series
Set series = co.Chart.SeriesCollection(1)

series.Name = "2025年売上"
series.Values = Worksheets("Sheet1").Range("B2:B6")
series.XValues = Worksheets("Sheet1").Range("A2:A6")
End Sub

6. 埋め込みグラフ(ChartObject)とグラフシート(Chart)の違い

項目埋め込みグラフ (ChartObject)グラフシート (Chart)
存在場所通常のワークシート上独立したグラフ専用のシート
操作対象ChartObjectChartプロパティでアクセス直接Chartオブジェクトとして操作
サイズや位置調整可能(ワークシート上の位置・大きさ)シート全体がグラフ
用途レポートシートに複数のグラフを配置単独のグラフ専用表示

7. よく使うChart関連定数例

定数名説明
xlColumnClusteredクラスタ化された縦棒グラフ
xlLine折れ線グラフ
xlPie円グラフ
xlBarClusteredクラスタ化された横棒グラフ
xlArea面グラフ

8. ChartObjectの応用的な操作例

8-1. グラフのコピー・貼り付け

Sub グラフコピー貼り付け()
Dim co As ChartObject
Set co = Worksheets("Sheet1").ChartObjects(1)

co.Copy
Worksheets("Sheet2").Paste Destination:=Worksheets("Sheet2").Range("A1")
End Sub

8-2. グラフの削除

Sub グラフ削除()
Worksheets("Sheet1").ChartObjects("MyChart").Delete
End Sub

9. ChartObjectとChartのまとめ

項目ChartObjectChart
役割ワークシート上のグラフのコンテナグラフのデータや構造を表すオブジェクト
所属コレクションWorksheet.ChartObjectsコレクションChartObject.ChartまたはChartsコレクション
操作可能項目位置・サイズ調整、表示制御、コピー等グラフタイプ設定、系列操作、タイトル設定等
作成メソッドChartObjects.AddPivotCaches.CreatePivotTableなどとは別

10. さいごに

ChartObjectChartは、Excel VBAでグラフ操作を行う上での基本オブジェクトです。
ChartObjectでグラフの位置やサイズを調整し、Chartでグラフの中身(データ系列、軸、タイトルなど)を細かく設定することで、自在なグラフ操作が可能になります。

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