Home » エクセルマクロ・Excel VBAの使い方 » グラフ・Chart » VBAでグラフシート上のグラフの種類を変更する

VBAでグラフシート上のグラフの種類を変更する

対象:Excel2007, Excel2010, Excel2013, Windows版Excel2016

グラフシート上のグラフの種類を変更するExcelマクロ

「vba グラフシートのグラフの種類を変数で指定」
という検索で、このサイト・インストラクターのネタ帳へのアクセスがありました。

「変数で」と表現されていますが、「定数で」のことかな、と想像しています。

[スポンサードリンク]

グラフシートのグラフ種類を変更するサンプルマクロ

以下のようなマクロで、グラフシートのグラフの種類を定数で指定して変更することができます。

Sub グラフの種類を変更する()

 Charts(1).ChartType = xl3DColumn

End Sub

上記のマクロを実行すると、アクティブなブックの一番左にあるグラフシートの種類が「3-D縦棒」になります。

グラフの種類を変更するには、ChartオブジェクトのChartTypeプロパティに、XlChartType列挙に定義されている定数を指定すればOKです。

グラフ種別を表す定数が自動メンバー表示されない理由

上記のマクロでグラフシートのグラフ種別を変更できますが、実は残念な部分があります。

コーディング時に「Charts(1).ChartType =」まで入力しても、グラフ種別を表す定数がメンバー表示されないのです。

これは(オブジェクトブラウザーを確認するとわかるとおり)、SheetsコレクションやChartsコレクションの既定プロパティである_Defaulプロパティの戻りが、Objectになってしまっているためです。

グラフシート上のグラフの種類を変更するExcelマクロ

Chartsプロパティで取得したSheetsコレクションの単独オブジェクトはChartオブジェクトなのですから、Chartsプロパティの戻り値がSheetsではなくChartsコレクションで、Chartsコレクションの_DefaulやItemがChartオブジェクトを返すようになっていれば良かったのですが。

グラフ種類を表す定数が自動メンバー表示されるようにしたグラフ種別を変更するサンプルマクロ

と、文句を言ったところで、改善されることはないでしょうから、自動メンバー表示されるようなコードの書き方をご紹介しておきます。

以下のようなマクロにしておけば、グラフの種類を表す定数が自動メンバー表示されるようになります。

Sub グラフの種類を変更する_オブジェクト変数()

 Dim cht As Chart

 Set cht = Charts(1)
 cht.ChartType = xl3DColumn

End Sub

Chart型のオブジェクト変数を宣言しておいて、
 Dim cht As Chart

一番左のグラフシートを、このオブジェクト変数にセットしておけば、
 Set cht = Charts(1)

下図のように、定数がメンバー表示されるようになります。

グラフシート上のグラフの種類を変更するExcelマクロ

オブジェクト式の文法を身につけ、オブジェクト変数をしっかり理解した上で使えると、コーディング効率をこのような形でも上げられます。

最終更新日時:2020-06-11 16:20

[スポンサードリンク]

Home » エクセルマクロ・Excel VBAの使い方 » グラフ・Chart » VBAでグラフシート上のグラフの種類を変更する

「グラフ・Chart」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.