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

【本日のミッション】

Excel VBAにて、アクティブなグラフから ChartObject を変数にセットせよ。

ミッションの概要

Excel VBAにて、アクティブなグラフから ChartObject を変数にセットせよ、というのが今回のミッションです。

データには気象庁 過去の気象データを使用させて頂きました。
気象庁 過去の気象データ・ダウンロード

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

プロシージャ

アクティブなグラフの親オブジェクト「ChartObjectオブジェクト」を ChartObject変数「ChtObj」にセットし、その名前をダイアログ表示するコードです。

Sub グラフ名取得()

    '【変数】
    Dim ChtObj As ChartObject         '処理対象ChartObjectオブジェクト
    
    '■変数セット
    Set ChtObj = ActiveChart.Parent   '処理対象ChartObjectオブジェクト
        
    '■グラフ名表示
    MsgBox ChtObj.Name

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

ActiveChartプロパティ

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

ActiveChart.Parentプロパティ

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

Set ChtObj = ActiveChart.Parent

実行時エラー ’13’: 型が一致しません。 が出る原因(ChartObjectオブジェクト⇔Chartオブジェクト)

ActiveChart.Parentプロパティは ChartObjectオブジェクトを返すので、セットする変数の型ChartObjectで宣言しておく必要があります。

Dim ChtObj As ChartObject

変数「ChtObj」をChartObjectのデータ型で宣言しているのに、セットするオブジェクトがActiveChart(Chartオブジェクト)だった場合、「実行時エラー ’13’: 型が一致しません。」というエラーが出てしまいます。

Dim ChtObj As ChartObject
Set ChtObj = ActiveChart

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

実行時エラー ’13’: 型が一致しません。 が出る原因(ChartObjectオブジェクト⇔Workbookオブジェクト)

選択しているグラフが埋め込みグラフではなく、グラフシートだった場合、ActiveChart.Parentの戻り値はChartObjectオブジェクトではなく、Workbookオブジェクトになります。

変数「ChtObj」をChartObjectのデータ型で宣言しているのに、セットするオブジェクトがWorkbookオブジェクトだった場合、「実行時エラー ’13’: 型が一致しません。」というエラーが出てしまいます。

Dim ChtObj As ChartObject
Set ChtObj = ActiveChart.Parent

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

実行時エラー ’91’:オブジェクト変数または With ブロック変数が設定されていません。 が出る原因

グラフが選択されていない状態で、オブジェクトを変数にセットしようとしているのでエラーになります。

Set ChtObj = ActiveChart.Parent

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

グラフ名を確認する方法

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

名前ボックス

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

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

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

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

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

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

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

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

参照

系列が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)

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