Excel 2007で、系列の色を設定するには、次のようにします。最初は、テーマの色を設定してみましょう。
Sub Sample() ActiveSheet.ChartObjects(1).Chart. _ SeriesCollection(1).Format.Fill. _ ForeColor.ObjectThemeColor = msoThemeColorAccent6 End Sub
ここで指定したテーマの色は、下図の一番右にあるオレンジです。
色に関する詳しい解説は、目次ページの[色について]をご覧ください。
上記の
Sub Sample() ActiveSheet.ChartObjects(1).Chart. _ SeriesCollection(1).Format.Fill. _ ForeColor.ObjectThemeColor = msoThemeColorAccent6 End Sub
は、実際には1行です。一応書いておきますが・・・
グラフ(Chartオブジェクト)の、SeriesCollectionメソッドは、Seriesオブジェクトを返します。
Seriesオブジェクトの、Formatプロパティは、ChartFormatオブジェクトを返します。
ChartFormatオブジェクトの、Fillプロパティは、FillFormatオブジェクトを返します。
FillFormatオブジェクトの、ForeColorプロパティは、ColorFormatオブジェクトを返します。
ColorFormatオブジェクトの、ObjectThemeColorプロパティは、テーマの色を設定するプロパティです。
ObjectThemeColorプロパティには、次の定数を指定できます。
定数 | 値 | 意味 |
---|---|---|
msoNotThemeColor | 0 | テーマの色を指定しません |
msoThemeColorAccent1 | 5 | アクセント1 |
msoThemeColorAccent2 | 6 | アクセント2 |
msoThemeColorAccent3 | 7 | アクセント3 |
msoThemeColorAccent4 | 8 | アクセント4 |
msoThemeColorAccent5 | 9 | アクセント5 |
msoThemeColorAccent6 | 10 | アクセント6 |
msoThemeColorBackground1 | 14 | 背景1 |
msoThemeColorBackground2 | 16 | 背景2 |
msoThemeColorDark1 | 1 | 濃色1 |
msoThemeColorDark2 | 3 | 濃色2 |
msoThemeColorFollowedHyperlink | 12 | クリックされたハイパーリンク |
msoThemeColorHyperlink | 11 | ハイパーリンク |
msoThemeColorLight1 | 2 | 淡色1 |
msoThemeColorLight2 | 4 | 淡色2 |
msoThemeColorText1 | 13 | テキスト1 |
msoThemeColorText2 | 15 | テキスト2 |
Excel 2003までで使い慣れたSchemeColorを使うこともできます。
Sub Sample() ActiveSheet.ChartObjects(1).Chart. _ SeriesCollection(1).Format.Fill. _ ForeColor.SchemeColor = 8 End Sub
RGB関数を使って、色をRGB値で指定することも可能です。
Sub Sample15() ActiveSheet.ChartObjects(1).Chart. _ SeriesCollection(1).Format.Fill. _ ForeColor.RGB = RGB(128, 54, 205) End Sub
Excel 2003で系列の色を変更すると、次のようなコードが記録されます。
Sub Macro() ActiveSheet.ChartObjects(1).Activate ActiveChart.SeriesCollection(1).Select With Selection.Interior .ColorIndex = 3 .Pattern = xlSolid End With End Sub
グラフ名のところは、インデックス値に変更しました。このコードは、Excel 2007でも問題なく動作します。
もっとも、マクロ記録したコードをそのまま使うような人はいないでしょうから、普通は次のようにして系列の色を変更していたと思います。
Sub Macro() With ActiveSheet.ChartObjects(1).Chart .SeriesCollection(1).Interior.ColorIndex = 3 End With End Sub
もちろん、このコードもExcel 2007で問題なく動作します。