Excel 2007で、グラフの凡例を設定するには、次のようにします。
Sub Sample()
With ActiveSheet.ChartObjects(1).Chart
If .HasLegend = False Then .HasLegend = True ''凡例を表示する
.Legend.Position = xlLegendPositionTop ''凡例を上に表示する
.Legend.IncludeInLayout = False ''凡例をグラフに重ねる
With .Legend.Format.Fill
.Visible = msoTrue ''凡例を塗りつぶします
.ForeColor.RGB = RGB(255, 0, 0) ''赤色
.ForeColor.TintAndShade = 0.5 ''明暗の設定
End With
End With
End Sub

凡例を設定するには、そもそも凡例が表示されていなければなりません。そこで「Chart.HasLegend = True」をします。
凡例の位置は「Chart.Legend.Position」プロパティに、次の定数を指定します。
| 定数 | 値 | 意味 |
|---|---|---|
| xlLegendPositionBottom | -4107 | グラフの下 |
| xlLegendPositionCorner | 2 | グラフの輪郭線の右上隅 |
| xlLegendPositionCustom | -4161 | 任意の位置 |
| xlLegendPositionLeft | -4131 | グラフの左 |
| xlLegendPositionRight | -4152 | グラフの右 |
| xlLegendPositionTop | -4160 | グラフの上 |
IncludeInLayoutプロパティは、Excel 2007で追加されたプロパティです。凡例をグラフに重ね合わせるかどうかを指定します。Trueを指定すると、凡例はグラフの上に表示され、Falseを指定すると、凡例はグラフに重ね合わせて表示されます。
凡例を塗りつぶすには、まず「Legend.Format.Fill.Visible」プロパティにTrueを指定します。あとは、ForColorに色を設定します。色に関しては、目次ページの「色について」で解説していますのでご覧ください。
Excel 2003で
という操作をマクロ記録してみましょう。
Sub Macro()
ActiveSheet.ChartObjects("グラフ 1").Activate
ActiveChart.Legend.Select
With Selection.Border
.Weight = xlHairline
.LineStyle = xlAutomatic
End With
Selection.Shadow = False
With Selection.Interior
.ColorIndex = 38
.PatternColorIndex = 1
.Pattern = xlSolid
End With
Selection.Position = xlTop
End Sub
このコードを、Excel 2007で実行してみます。
【Excel 2007での実行結果】

問題ないようですね。