エクセル VBA アクティブなグラフのインデックス番号を取得(Excel VBA)

【本日のミッション】

選択しているグラフのインデックス番号を取得せよ。(Excel VBA)

ミッションの概要

選択しているグラフのインデックス番号を取得せよ、というのが今回のミッションです。

今回対象としているのは、作業中のシートに作られている埋め込みオブジェクトのグラフです。

エクセル VBA アクティブなグラフのインデックス番号を取得(Excel VBA)

エクセル VBA アクティブなグラフのインデックス番号を取得(Excel VBA)

選択しているグラフのタイトルに、「“Index:” & グラフのインデックス番号」を表示させることで、インデックス番号を確認します。

エクセル VBA アクティブなグラフのインデックス番号を取得(Excel VBA)
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓

エクセル VBA アクティブなグラフのインデックス番号を取得(Excel VBA)

■■■スポンサーリンク■■■

プロシージャ

選択しているグラフのタイトルに、「“Index:” & グラフのインデックス番号」を表示させるコードです。オレンジ文字部分が、選択しているグラフのインデックス番号を取得する処理になります。

Sub アクティブなグラフのインデックス番号を取得()
    ActiveChart.ChartTitle.Text = "Index:" & ActiveChart.Parent.Index
End Sub

上記コード実行の結果、「Index:」というテキストとアクティブなグラフのインデックス番号を結合した「Index:1」がグラフタイトルに表示されます。

エクセル VBA アクティブなグラフのインデックス番号を取得(Excel VBA)

ActiveChart プロパティ

アクティブなグラフシート、またはアクティブなグラフ (Chartオブジェクト) を返します。
グラフを選択していないときは、Nothing を返します。

MsgBox ActiveChart.ChartTitle.Text

上記コードでは、アクティブなグラフのタイトルを、ダイアログ表示させています。
エクセル VBA アクティブなグラフのインデックス番号を取得(Excel VBA)

ActiveChart.Parent プロパティ

埋め込みグラフを選択している時、ActiveChart(Chartオブジェクト)の親オブジェクトにあたるChartObjectオブジェクトを返します。

ActiveChartプロパティで取得できるChartオブジェクトから、インデックス番号を取得することはできません。Chartオブジェクトの親オブジェクトであるChartObjectオブジェクトにさかのぼって、インデックス番号を取得します。

ActiveChart.Parent.Index

参考:エクセル VBA アクティブなグラフからChartObjectを変数にセット(Excel VBA)

ChartObject.Index プロパティ

ChartObjectオブジェクトのインデックス番号を返します。

ChartObjectオブジェクト と Chartオブジェクト の関係 そして ActiveChartプロパティとは

ChartObjectオブジェクトは、Chartオブジェクトを入れている枠(箱)の部分のことです。
ChartObjectオブジェクトは、Chartオブジェクトの親オブジェクトになります。
ChartObjectオブジェクトは、グラフ枠のサイズや位置を制御します。
Chartオブジェクトは、グラフ全般の設定を制御します。
ActiveChartプロパティを使用すると、アクティブなChartオブジェクトを取得することができます。
ActiveChart.Parentプロパティを使用すると、アクティブなChartオブジェクトの親オブジェクトであるChartObjectオブジェクトを取得することができます。

参考:エクセル VBA ChartObjectオブジェクトとChartオブジェクトとActiveChartプロパティの関係

ChartObjectオブジェクト

ChartObjectオブジェクトChartオブジェクトを入れている枠(箱)の部分になります。Chartオブジェクトが入っていないと、本当にただの枠ですね。
ChartObjectオブジェクトでできることは、グラフ枠のサイズや位置の設定等です。
エクセル VBA アクティブなグラフのインデックス番号を取得(Excel VBA)
ChartObjectオブジェクトを指定する場合、インデックス番号またはオブジェクト名で指定します。

Worksheetオブジェクト.ChartObjects(インデックス番号)
Worksheetオブジェクト.ChartObjects(オブジェクト名)

例えば、dataシートの「グラフ 1」という名前(インデックス番号:1)のグラフを指定する場合は、下記の通りになります。

Worksheets("data").ChartObjects(1)
Worksheets("data").ChartObjects("グラフ 1")

エクセル VBA アクティブなグラフのインデックス番号を取得(Excel VBA)

■■■スポンサーリンク■■■

Chartオブジェクト

Chartオブジェクトは、ChartObjectオブジェクト枠の中に作られたグラフ部分になります。
Chartオブジェクトでできることは、グラフの設定全般になります。グラフのデータ範囲やグラフの種類、タイトル、凡例の指定等を行います。
エクセル VBA アクティブなグラフのインデックス番号を取得(Excel VBA)

Chartオブジェクトを指定する場合は、ChartObjectオブジェクトから指定します。

Worksheetオブジェクト.ChartObjects(インデックス番号).Chart
Worksheetオブジェクト.ChartObjects(オブジェクト名).Chart

例えば、dataシートの「グラフ 1」という名前(インデックス番号:1)のChartオブジェクトを指定する場合は、下記の通りになります。

Worksheets("data").ChartObjects(1).Chart
Worksheets("data").ChartObjects("グラフ 1").Chart

参照

系列が1つのグラフを自動大量連続作成(Excel VBA)
「実行時エラー 1004」を出さずに、ワークシート内のグラフを「グラフ 元」以外全て削除(Excel VBA)
グラフの参照先を変えると勝手にグラフの色が変わる現象を解決せよ
系列が複数あるグラフを自動大量連続作成(Excel VBA)
n行毎の改ページ設定 「実行時エラー1004 RangeクラスのPageBreakプロパティを設定できません」の原因(Excel VBA)
参照データ数が異なる・参照先が変動する月別グラフを自動大量連続作成(Excel VBA)
複数系列・参照データ数が異なる・参照先が変動する月別グラフを自動大量連続作成(Excel VBA)
大量の画像やグラフ等のオブジェクトで画面表示が遅いのを解決(Excel)
エクセル シートに画像が存在するかどうか(有無)を調べる方法(Excel VBA)
エクセルシート上 全てのオブジェクト(画像・図形・グラフ等)を選択し、削除する(Excel VBA)
エクセルシート上のオブジェクト(図形・画像・グラフ等)の件数を数える方法(Excel VBA)
エクセル シートにグラフが存在するかどうか(有無)を調べる方法(Excel VBA)
エクセル シートに図形が存在するかどうか(有無)を調べる方法(Excel VBA)
エクセル 選択しているセル範囲に写真が存在しているか(有無)を確認(Excel VBA)
エクセル 選択しているセル範囲にグラフが存在しているか(有無)を確認(Excel VBA)
エクセル 選択しているセル範囲に図形が存在しているか(有無)を確認(Excel VBA)
エクセル 選択セル範囲の写真を削除する(Excel VBA)
エクセル 選択セル範囲のグラフを削除する(Excel VBA)
エクセル 選択セル範囲の図形を削除する(Excel VBA)
Excel VBAでワードを起動して文字を入力操作(Excel VBA)
Excel VBAでワードを起動してエクセルの表をワードに貼付け(Excel VBA)
Excel VBAでワードを起動して エクセルのエクセルの表を図としてワードに貼付け(Excel VBA)
Word コピー貼付けした図が白い枠だけ?図が表示されない現象を解決
Excel VBAでワードを起動して グラフをワードに図として貼付け(Excel VBA)
Excel VBAでワードを起動して 複数のグラフをワードに図として貼付け(Excel VBA)
エクセル VBA グラフにタイトルを追加する(Excel VBA)
エクセル VBA グラフのタイトルテキストを取・する(Excel VBA)
エクセル VBA グラフに凡例を追加する(Excel VBA)
エクセル VBA グラフオブジェクトの名前を変更する(Excel VBA)
エクセルVBA アクティブなグラフからChartObjectを変数にセット(Excel VBA)
エクセル VBA アクティブなグラフの名前を取得する(Excel VBA)
エクセル VBA【配色テーマ Office】セルの塗りつぶしのテーマの色・色の明暗を取得
エクセル VBA【配色テーマ Office 2007 – 2010】セルの塗りつぶしのテーマの色・色の明暗を取得
エクセル VBA セルの塗りつぶしに【配色テーマ Office】の色を設定(Excel VBA)
エクセル VBA セルの塗りつぶしに【配色テーマ Office 2007-2010】の色を設定(Excel VBA)
エクセル VBA【配色テーマ Office】セルの塗り テーマの色からRGB(赤・緑・青)を取得せよ
エクセル VBA【配色テーマ Office 2007-2010】セルの塗り テーマの色からRGB(赤・緑・青)を取得せよ
エクセル VBA 折れ線グラフの線色をテーマの色【Office】6色に変更する
エクセル VBA 折れ線グラフの線色をテーマの色【Office 2007 – 2010】6色に変更する
エクセル VBA 棒グラフ系列の塗りつぶし・線色をテーマの色【Office】6色に変更する
エクセル VBA 棒グラフ系列の塗りつぶし・線色をテーマの色【Office 2007 – 2010】6色に変更する
エクセル VBA マーカー付き折れ線グラフ系列の塗り・線色をテーマの色【Office】6色に変更する
エクセル VBA マーカー付き折れ線グラフ系列の塗り・線色をテーマの色【Office 2007-2010】6色に変更する
エクセル VBA マーカー付き折れ線グラフ系列の塗り・線色をテーマの色【Office】36色に変更する
エクセル VBA マーカー付き折れ線グラフ系列の塗り・線色をテーマの色【Office2007-2010】36色に変更する
エクセル VBA ChartObjectオブジェクトとChartオブジェクトとActiveChartプロパティの関係
エクセル VBA アクティブシート 全グラフのインデックス番号をタイトルに表示する(Excel VBA)
エクセル VBA アクティブなグラフのインデックス番号を取得(Excel VBA)

■■■スポンサーリンク■■■