ChartObjectオブジェクトの取得

グラフを表示するにはグラフシートを使う以外に、ワークシート内に埋め込みオブジェクトとしてグラフを表示することができます。埋め込んだグラフも Chart オブジェクトですが、埋め込みフの場合にはワークシート内にまずグラフを表示するためコンテナである ChartObject オブジェクトがあり、そのコンテナの中に Chart オブジェクトが含まれている形になります。ここでは Excel VBA で ChartObject オブジェクトを取得する方法を解説します。

(Last modified: )

ChartObjectオブジェクトの取得

まずChartObjectオブジェクトを取得してみます。ChartObjectオブジェクトはWorksheetオブジェクトのChartObjectsメソッドを使います。

Dim chartObj As ChartObject

Set chartObj = ActiveSheet.ChartObjects(1)

「ChartObjects」メソッドの引数にはインデックス番号を指定します。インデックス番号はワークシートに含まれる埋め込みグラフのインデックス番号です。またインデックス番号の代わりにグラフ名を指定します。(ただ、Excel上でグラフ名を変更する手順が分かりませんでした)。

Dim chartObj As ChartObject

Set chartObj = ActiveSheet.ChartObjects("グラフ名")

ChartObjectオブジェクトからChartオブジェクトを取得

埋め込みグラフに対して様々な操作を行うには、ChartObjectオブジェクトからChartオブジェクトを取り出す必要があります。Chartオブジェクトを取り出すには、ChartObjectオブジェクトの「Chart」プロパティを使います。

Dim chartObj As ChartObject
Dim chart1 As Chart

Set chartObj = ActiveSheet.ChartObjects(1)
Set chart1 = chartObj.Chart

取得したChartオブジェクトは、グラフシートと同じように扱う事が可能です。(ただし、Activateメソッドなど一部使えないものはあります)。

サンプルプログラム

では簡単なサンプルで試してみましょう。

下記のようにワークシートの中に埋め込みグラフが1つある状態で、そのグラフの元になるデータを設定してみます。

埋め込みグラフの利用

Sub テスト()

    Dim chartObj As ChartObject
    Dim chart1 As Chart

    Set chartObj = ActiveSheet.ChartObjects(1)
    Set chart1 = chartObj.Chart

    chart1.SetSourceData Worksheets("Sheet1").Range("B2:E6")
    
End Sub

上記マクロを実行すると次のようになります。

埋め込みグラフの利用

※上記のサンプルではChartオブジェクトの「SetSourceData」メソッドを使ってグラフのデータ範囲を指定しています。詳しくは『グラフのデータ範囲の設定』を参照して下さい。

-- --

Excel VBA で ChartObject オブジェクトを取得する方法を解説しました。

( Written by Tatsuo Ikura )

Profile
profile_img

著者 / TATSUO IKURA

プログラミングや開発環境構築の解説サイトを運営しています。