エクセル VBA 「グラフ 1」のグラフの名前をChartObject.Nameで取得すると「Chart 1」になる

【本日のミッション】

Excel VBAにて「グラフ 1」のグラフの名前を、ChartObject.Nameプロパティで取得すると「Chart 1」になってしまう現象を解明せよ。

ミッションの概要

Excel VBAにて「グラフ 1」のグラフの名前を、ChartObject.Nameプロパティで取得すると「Chart 1」になってしまう現象を解明せよ、というのが今回のミッションです。

左上「グラフ 1」、右上「グラフ 2」、左下「グラフ 3」、右下「グラフ 4」という名前のグラフなのに、グラフの名前をグラフタイトルに表示させてみると・・・・

エクセル VBA 「グラフ 1」のグラフの名前をChartObject.Nameで取得すると「Chart 1」になる


↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
なぜかアルファベットの「Chart 1」「Chart 2」「Chart 3」「Chart 4」に変わっている???現象を解明します。
エクセル VBA 「グラフ 1」のグラフの名前をChartObject.Nameで取得すると「Chart 1」になる

今回導き出した結果は、何かの参考書に書いてあったわけではなく、色々なパターンを試した結果であることをご了承ください。

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

プロシージャ

アクティブシートの全グラフの名前を、グラフタイトルに表示させるコードです。

Sub グラフ名をグラフタイトルに表示()
    '【変数】
    Dim c_ct As Long    'グラフカウント
    
    '1つ目のグラフから順に処理
    For c_ct = 1 To ActiveSheet.ChartObjects.Count
    
        'グラフ名をグラフタイトルに表示
        ActiveSheet.ChartObjects(c_ct).Chart.ChartTitle.Text = ActiveSheet.ChartObjects(c_ct).Name
    
    Next c_ct
End Sub

グラフオブジェクトの名前は「グラフ 1」「グラフ 2」「グラフ 3」「グラフ 4」にしてあるので、それぞれのグラフタイトルは「グラフ 1」「グラフ 2」「グラフ 3」「グラフ 4」になるはずです。

しかし、タイトルにはアルファベットの「Chart 1」「Chart 2」「Chart 3」「Chart 4」になってしまいました。

エクセル VBA 「グラフ 1」のグラフの名前をChartObject.Nameで取得すると「Chart 1」になる

グラフの名前が初期値のままの時(グラフ作成の順番「n」とグラフの名前「グラフ n」の番号「n」が同じ時)グラフ名が「Chart n」になってしまう

ChartObject.Name プロパティでグラフ名を取得した際、グラフ名が勝手に「Chart n」になってしまう条件を考えてみました。

結論としては、グラフの名前が初期値のままの時グラフ作成の順番「n」とグラフの名前「グラフ n」番号「n」が同じ時)に、ChartObject.Nameで取得されるグラフ名が「Chart n」になるようです。

グラフの名前の初期値とは、
「グラフ」& 半角スペース & そのシートでグラフが作成された順番「n」
です。

そのシートで1番初めに作られたグラフの名前は「グラフ 1」、2番目に作られたグラフは「グラフ 2」になります。

今回のグラフ作成の順番「n」と、グラフのインデックス番号とは異なるようです。

インデックス番号は、自分よりも若い番号のグラフが削除されると、番号が繰り上げされます。(例:インデックス番号「2」のグラフが削除されると、それまでインデックス番号「3」のグラフが「2」になります。)

参考:エクセル VBA グラフ インデックス番号の決まり方(Excel VBA)

しかし、グラフ作成の順番「n」は、他のグラフが削除されても初期値の順番を保持しているようです。

グラフ名や作成順、インデックス番号を変えて色々と試した結果を下記にまとめました。

グラフ名グラフ作成の順番グラフのインデックス番号ChartObject.Nameで取得されるグラフ名
グラフ 111Chart 1
グラフ 112Chart 1
グラフ 221Chart 2
グラフ 122グラフ 1
グラフ111グラフ1
チャート 111チャート 1
■■■スポンサーリンク■■■

グラフの名前が初期値のままの(グラフ作成の順番「n」とグラフの名前「グラフ n」の番号「n」が同じ)場合は「Chart n」になる

下記左グラフは、このシートで1番最初に作られたものです。(グラフ作成の順番「1」)グラフ名は「グラフ 1」、インデックス番号は「1」です。

このシートで、上記「グラフ名をグラフタイトルに表示」プロシージャを実行すると、グラフタイトルに、「Chart 1」が表示されました。

グラフの名前を初期値のまま変更していない(グラフ作成の順番「n」とグラフの名前「グラフ n」の番号「n」が同じ)場合は、「Chart n」なるようです。

エクセル VBA 「グラフ 1」のグラフの名前をChartObject.Nameで取得すると「Chart 1」になる

グラフ名グラフ作成の順番グラフのインデックス番号ChartObject.Nameで取得されるグラフ名
グラフ 111Chart 1
グラフ 112Chart 1
グラフ 221Chart 2

グラフ作成の順番「n」とグラフの名前「グラフ n」の番号「n」が異なる場合は「Chart n」にならない

下記右グラフは、このシートで2番目に作られたものです。(グラフ作成の順番「2」)グラフ名は「グラフ 1」、インデックス番号は「2」です。

このシートで、上記「グラフ名をグラフタイトルに表示」プロシージャを実行すると、グラフタイトルに、「グラフ 1」が表示されました。

グラフの名前を初期値から変更し、グラフ作成の順番「n」とグラフの名前「グラフ n」の番号「n」が異なる場合は、「Chart n」ならないようです。

エクセル VBA 「グラフ 1」のグラフの名前をChartObject.Nameで取得すると「Chart 1」になる

グラフ名グラフ作成の順番グラフのインデックス番号ChartObject.Nameで取得されるグラフ名
グラフ 122グラフ 1

「グラフ」と番号「n」の間に半角空欄を入れない場合、グラフ名は「Chart n」にならない

下記左グラフは、このシートで一番最初に作られたものです。(グラフ作成の順番「1」)グラフ名は「グラフ1」、インデックス番号は「1」です。

このシートで、上記「グラフ名をグラフタイトルに表示」プロシージャを実行すると、グラフタイトルに、「グラフ1」が表示されました。

グラフ作成の順番グラフ名の番号の「n」が同じ場合でも、「グラフ」と番号「n」の間に半角空欄を入れない場合、グラフ名は「Chart n」にならないようです。半角空欄が無いだけで、「グラフn」は初期値の「グラフ n」と異なる名前として判断されるのですね。

エクセル VBA 「グラフ 1」のグラフの名前をChartObject.Nameで取得すると「Chart 1」になる

グラフ名グラフ作成の順番グラフのインデックス番号ChartObject.Nameで取得されるグラフ名
グラフ111グラフ1

グラフ名に「グラフ」以外の文言を使用すると、番号「n」が同じ場合でも「Chart n」にならない

下記左グラフは、このシートで一番最初に作られたものです。(グラフ作成の順番「1」)グラフ名は「チャート 1」、インデックス番号は「1」です。

このシートで、上記「グラフ名をグラフタイトルに表示」プロシージャを実行すると、グラフタイトルに、「チャート 1」が表示されました。

グラフ作成の順番グラフ名の番号の「n」が同じ場合でも、「グラフ」と異なる文言を使用している場合、グラフ名は「Chart n」にならないようです。グラフ名の初期値「グラフ n」と完全に異なる名前なので、別物として判断されるのですね。

エクセル VBA 「グラフ 1」のグラフの名前をChartObject.Nameで取得すると「Chart 1」になる

グラフ名グラフ作成の順番グラフのインデックス番号ChartObject.Nameで取得されるグラフ名
チャート 111チャート 1

ChartObject.Name プロパティ

ChartObjectの名前を返します。

グラフ名を確認する方法

グラフ名は、「名前ボックス」や「オブジェクトの選択と表示」で確認することができます。

名前ボックス

グラフを選択すると、左上の名前ボックスにグラフの名前が表示されます。

エクセル VBA 「グラフ 1」のグラフの名前をChartObject.Nameで取得すると「Chart 1」になる

オブジェクトの選択と表示

[ホーム]タブの[編集]から[検索と選択](双眼鏡マーク)をクリックし、[オブジェクトの選択と表示]をクリックします。

エクセル VBA 「グラフ 1」のグラフの名前をChartObject.Nameで取得すると「Chart 1」になる

画面右に「選択」ウィンドウが表示され、アクティブシートに存在しているオブジェクトが表示されています。

選択しているグラフ(オブジェクト)の名前が選択(色付き)された状態になります。下記例では選択しているグラフの名前は「グラフ 1」です。

エクセル VBA 「グラフ 1」のグラフの名前をChartObject.Nameで取得すると「Chart 1」になる

参照

系列が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)
エクセル VBA グラフ インデックス番号の決まり方(Excel VBA)
エクセル VBA グラフのインデックス番号を変更する(Excel VBA)
エクセル VBA アクティブシートの全グラフの名前をタイトルに表示する(Excel VBA)
エクセル VBA 「グラフ 1」のグラフの名前をChartObject.Nameで取得すると「Chart 1」になる

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