2009年06月16日

図形とグラフの色

Excel VBAにおける図形とグラフの色の扱いも、2003以前と2007とでは多少変わった部分があります。

もともと、図形(Shape)の色に関する設定自体が(テキストに関する設定も同様ですが)、プロパティをいろいろ重ねる必要があって、少々めんどくさい。(^^;)
まずFillプロパティでFillFormatオブジェクト(塗りつぶしの設定)を取得し、そのForeColorプロパティなどでColorFormatオブジェクト(色の設定)を取得し、そのRGBプロパティやSchemeColorプロパティ、ObjectThemeColorプロパティでようやく色を設定する、という段取りです。

RGBプロパティはセルの塗りつぶしの色でいうとColorプロパティ、SchemeColorプロパティはColorIndexプロパティ、ObjectThemeColorプロパティはThemeColorプロパティに、それぞれ相当します。
ただし、SchemeColorで各色に割り当てられたインデックス番号が、ColorIndexのそれとは若干ズレているのが、またややこしいところ。

一方、グラフについては、グラフエリアを表すChartAreaオブジェクト、プロットエリアを表すPlotAreaオブジェクトなどのグラフ要素に対して、それぞれ塗りつぶしの色が設定できます。
やはりFillプロパティが使用できるので、これでFillFormatオブジェクトを取得して、以下図形と同様に……と思ったら、話はそう簡単ではありません。(^^;)

グラフ要素のFillプロパティで取得できるのはChartFillFormatオブジェクトといって、普通のFillFormatオブジェクトとは少々違っています。
具体的には、ChartFillFormatオブジェクト経由の場合、RGBプロパティの値を調べることはできても、設定することはできません。
Excel 2003までは、グラフ要素の色を設定したい場合はSchemeColorプロパティを使用するしかなかったのです。

この点が2007になってどう変わったのかというと、ChartAreaなどのグラフ要素のオブジェクトで、新たに追加されたFormatプロパティを使用することで、ChartFormatオブジェクトが取得できます。さらにそのFillプロパティで、Shapeと同様のFillFormatオブジェクトが取得できます。
これで、RGBプロパティによる色の設定も行えるようになりました。

……って、自分で書いていても結構めんどくさくなってきてますが(^^;)、実際のコードの例としては次のような感じ。

ActiveChart.ChartArea.Format.Fill.ForeColor.RGB = rgbGold

2007になってできることが増えたのも確かだけど、めんどくささのレベルもまた1つ上がったかな、というのが正直な感想です。(^^;)
posted by 土屋和人 at 18:48| Comment(0) | TrackBack(0) | Excel
この記事へのコメント
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

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


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

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