Excelのグラフには、ワークシート上の「埋め込みグラフ」と、「グラフシート」の2種類があります。
VBAでこれらのグラフを操作する場合には、いずれもChartオブジェクトとして取得します。
ただし、前者がWorksheetオブジェクト→ChartObjectオブジェクト→Chartオブジェクトという構造になっているのに対し、後者のChartオブジェクトはWorksheetオブジェクトと同格のオブジェクトです。
ワークシート上でアクティブになっている埋め込みグラフ、または表示されているグラフシートを表すChartオブジェクトは、いずれもActiveChartプロパティで取得できます。
これによって、グラフの内容に関する操作であれば、どちらのグラフであっても、ほとんど同じコードで処理が行えます。
ただ、ここで書いたような違いもあるわけで、アクティブなグラフが埋め込みグラフかグラフシートかをコードの中で判定したいケースもあるでしょう。
このような場合に、直接的に「埋め込みグラフ」または「グラフシート」を表すプロパティというのは、私が調べた限りでは、どうもないようなのです。
これらを相互に変換することも可能ですが、その場合に使うのはLocationメソッドであり、これは現在の状態を調べるのには使えません。
もちろん、だからといって、調べる方法がまったくないわけではありません。
たとえば、ParentプロパティでChartの親オブジェクトを求め、TypeName関数でそれが「ChartObject」か「Workbook」かを調べる、といった手なら考えられるのですが……。
もっと簡単な方法や直接的な方法をご存知の方は、お教えいただけるとありがたいです。
※ところで、VBAヘルプの「Chartオブジェクト」の項目で、またしても間違いを発見。(^^;)
Chartオブジェクトを取得する方法の1つとして「Chartsメソッド」と書かれている(2003、2007ともに)のですが、これは「Chartsプロパティ」の間違いです。
たぶん、以前はメソッドだった機能の解説をそのまま引きずっている、ということだとは思いますが……。
2003のヘルプにいたっては、小見出しが「Chartsメソッド」なのに解説文では「Chartsプロパティ」になっています。(^^;)
2008年11月24日
この記事へのコメント
コメントを書く
この記事へのトラックバックURL
http://blog.sakura.ne.jp/tb/23300307
※言及リンクのないトラックバックは受信されません。
この記事へのトラックバック
http://blog.sakura.ne.jp/tb/23300307
※言及リンクのないトラックバックは受信されません。
この記事へのトラックバック