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つ上がったかな、というのが正直な感想です。(^^;)
2009年06月16日
この記事へのコメント
コメントを書く
この記事へのトラックバックURL
http://blog.sakura.ne.jp/tb/29845085
※言及リンクのないトラックバックは受信されません。
この記事へのトラックバック
http://blog.sakura.ne.jp/tb/29845085
※言及リンクのないトラックバックは受信されません。
この記事へのトラックバック