凡例を設定する


凡例は「はんれい」って読むんだよ

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のコードは動くか

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での実行結果】

問題ないようですね。