2008年11月24日

Chartオブジェクト

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プロパティ」になっています。(^^;)
posted by 土屋和人 at 10:40| Comment(0) | TrackBack(0) | Excel
この記事へのコメント
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
この記事へのトラックバックURL
http://blog.sakura.ne.jp/tb/23300307
※言及リンクのないトラックバックは受信されません。

この記事へのトラックバック