「vba グラフシートのグラフの種類を変数で指定」
という検索で、このサイト・インストラクターのネタ帳へのアクセスがありました。
「変数で」と表現されていますが、「定数で」のことかな、と想像しています。
グラフシートのグラフ種類を変更するサンプルマクロ
以下のようなマクロで、グラフシートのグラフの種類を定数で指定して変更することができます。
Charts(1).ChartType = xl3DColumn
End Sub上記のマクロを実行すると、アクティブなブックの一番左にあるグラフシートの種類が「3-D縦棒」になります。
グラフの種類を変更するには、ChartオブジェクトのChartTypeプロパティに、XlChartType列挙に定義されている定数を指定すればOKです。
グラフ種別を表す定数が自動メンバー表示されない理由
上記のマクロでグラフシートのグラフ種別を変更できますが、実は残念な部分があります。
コーディング時に「Charts(1).ChartType =」まで入力しても、グラフ種別を表す定数がメンバー表示されないのです。
これは(オブジェクトブラウザーを確認するとわかるとおり)、SheetsコレクションやChartsコレクションの既定プロパティである_Defaulプロパティの戻りが、Objectになってしまっているためです。
Chartsプロパティで取得したSheetsコレクションの単独オブジェクトはChartオブジェクトなのですから、Chartsプロパティの戻り値がSheetsではなくChartsコレクションで、Chartsコレクションの_DefaulやItemがChartオブジェクトを返すようになっていれば良かったのですが。
グラフ種類を表す定数が自動メンバー表示されるようにしたグラフ種別を変更するサンプルマクロ
と、文句を言ったところで、改善されることはないでしょうから、自動メンバー表示されるようなコードの書き方をご紹介しておきます。
以下のようなマクロにしておけば、グラフの種類を表す定数が自動メンバー表示されるようになります。
Dim cht As Chart
Set cht = Charts(1)
cht.ChartType = xl3DColumn
Chart型のオブジェクト変数を宣言しておいて、
Dim cht As Chart
一番左のグラフシートを、このオブジェクト変数にセットしておけば、
Set cht = Charts(1)
下図のように、定数がメンバー表示されるようになります。
オブジェクト式の文法を身につけ、オブジェクト変数をしっかり理解した上で使えると、コーディング効率をこのような形でも上げられます。
最終更新日時:2020-06-11 16:20
- Newer:VBAで文書の末尾・最後にカーソルを移動する
- Older:頭を整理しながら迷子にならずついていけた
Home » エクセルマクロ・Excel VBAの使い方 » グラフ・Chart » VBAでグラフシート上のグラフの種類を変更する