Worksheet ChartObject

Worksheet

1. はじめに

Excelのワークシート上には、セルだけでなく「グラフ(チャート)」も配置できます。
ワークシートに埋め込まれたグラフはVBAではChartObjectとして扱われます。

ChartObjectは、ワークシート上に埋め込まれた「オブジェクト型のグラフ」を表すオブジェクトで、複数のグラフを管理するためにChartObjectsというコレクションに格納されています。
このChartObjectsWorksheetのサブコレクションです。


2. ChartObjectとChartの違い

  • ChartObject
    ワークシート上に埋め込まれた「グラフの枠(コンテナ)」を表すオブジェクト。
    位置・サイズやオブジェクトの操作を担当します。
  • Chart
    実際のグラフそのもの(データ系列、軸、タイトルなどのグラフ構造)を表すオブジェクト。
    ChartObject.Chartプロパティを通じてアクセスします。

3. Worksheet.ChartObjectsコレクション

  • そのシートに存在するすべての埋め込みグラフを格納するコレクション。
  • 複数のグラフをインデックスや名前で管理可能。
  • グラフの追加や削除もこのコレクションを通じて行います。

例:グラフ数の取得と名前の列挙

Sub ChartObjects一覧()
Dim ws As Worksheet
Set ws = ThisWorkbook.Worksheets("Sheet1")

Dim co As ChartObject
Dim i As Long

Debug.Print "グラフの数: " & ws.ChartObjects.Count
For i = 1 To ws.ChartObjects.Count
Debug.Print "グラフ名: " & ws.ChartObjects(i).Name
Next i
End Sub

4. ChartObjectの主要プロパティ

プロパティ説明
Nameグラフオブジェクト名(ユニーク)
Left左端の位置(ポイント単位)
Top上端の位置(ポイント単位)
Width幅(ポイント単位)
Height高さ(ポイント単位)
Visibleグラフの表示/非表示
Chart実際のグラフオブジェクトへの参照
Placementオブジェクトの配置設定(例:移動やサイズ変更)

5. ChartObjectの主なメソッド

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

6. グラフの新規作成

ChartObjects.Addメソッドを使ってワークシートに新しいグラフオブジェクトを追加できます。

例:指定位置にグラフを追加

Sub 新規グラフ作成()
Dim ws As Worksheet
Set ws = ThisWorkbook.Worksheets("Sheet1")

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

co.Name = "MyChart"
co.Chart.ChartType = xlColumnClustered

' グラフにデータ範囲を指定
co.Chart.SetSourceData Source:=ws.Range("A1:B5")
End Sub
  • Addメソッドの引数はグラフの位置(Left, Top)とサイズ(Width, Height)をポイント単位で指定。
  • Chart.ChartTypeでグラフの種類を設定可能(例:縦棒グラフ)。
  • SetSourceDataでグラフに表示するデータ範囲を設定。

7. 既存グラフの操作

7-1. グラフのサイズや位置変更

Sub グラフ位置変更()
Dim ws As Worksheet
Set ws = ThisWorkbook.Worksheets("Sheet1")

Dim co As ChartObject
Set co = ws.ChartObjects("MyChart")

co.Left = 50
co.Top = 50
co.Width = 500
co.Height = 400
End Sub

7-2. グラフのデータ範囲変更

Sub グラフデータ変更()
Dim ws As Worksheet
Set ws = ThisWorkbook.Worksheets("Sheet1")

Dim co As ChartObject
Set co = ws.ChartObjects(1)

co.Chart.SetSourceData Source:=ws.Range("A1:C10")
End Sub

7-3. グラフの種類変更

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

co.Chart.ChartType = xlPie
End Sub

8. Chartオブジェクトの操作

ChartObjectChartプロパティでアクセスできるChartオブジェクトは、グラフの細かい構成を操作できます。

  • **系列(Series)**の追加・削除
  • 軸の設定(タイトル、目盛り)
  • グラフタイトルの設定
  • 凡例(Legend)の表示非表示
  • データラベルの追加

例:グラフタイトルを設定する

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

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

9. グラフのコピーと削除

9-1. コピー

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

co.Copy
' コピーしたグラフを別シートに貼り付ける例
Worksheets("Sheet2").Paste Destination:=Worksheets("Sheet2").Range("A1")
End Sub

9-2. 削除

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

10. グラフのイベント制御(応用)

Excel VBAではグラフに直接イベントを割り当てられませんが、ChartObjectの選択などに応じてマクロを動かすことが可能です。
フォームコントロールやワークシートのイベントと連携させて動作させる工夫が必要です。


11. まとめ

項目内容
ChartObjectワークシートに埋め込まれたグラフのオブジェクト
ChartObjectsワークシート上のすべてのグラフオブジェクトのコレクション
役割グラフの位置・サイズ管理、グラフ本体(Chart)へのアクセス
主な操作グラフの追加、削除、サイズ変更、データ範囲変更、グラフ種類変更
注意点Chartオブジェクトの操作はChartObject.Chartから行う
応用グラフタイトル設定、系列操作、コピー・貼り付けなど
タイトルとURLをコピーしました