1. はじめに
Excelのワークシート上には、セルだけでなく「グラフ(チャート)」も配置できます。
ワークシートに埋め込まれたグラフはVBAではChartObject
として扱われます。
ChartObject
は、ワークシート上に埋め込まれた「オブジェクト型のグラフ」を表すオブジェクトで、複数のグラフを管理するためにChartObjects
というコレクションに格納されています。
このChartObjects
はWorksheet
のサブコレクションです。
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オブジェクトの操作
ChartObject
のChart
プロパティでアクセスできる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 から行う |
応用 | グラフタイトル設定、系列操作、コピー・貼り付けなど |