機能と数式 | VBA | セミナー | オンラインソフト | お問い合わせ | その他
Top > Excel > VBA > Excel 2007以降のグラフ

凡例を設定する



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


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



問題ないようですね。



このエントリーをはてなブックマークに追加