エクセル:グラフのグラフエリア(ChartArea)、プロットエリア、プロットエリアの内側の違い

バージョンは2007。

グラフのレイアウトそのものは、グラフタイトル、軸ラベルが2つ付くタイプを選んだ。
この図から分かることを列挙すると、

  1. グラフエリア(ChartArea)は、グラフ全体を示す枠線の縁からやや小さい(実際には5ポイント分)。
  2. グラフエリアは、グラフ全体を示す枠線内の右下に寄せられている。
  3. プロットエリアは軸と軸の値を含み、軸ラベルは含まない。
  4. プロットエリアの内側は、軸を含まない、グラフの中核部分のみを示す。

なお、プロットエリアの内側の領域の大きさや位置をユーザが操作することはできないようだ。VBAでは内側領域の四隅の座標は値の取得のみできるようになっている。

サンプルマクロ

参考までに、下記に上の図を作ったコードを示す。Excelヘルプのサンプルコードを利用・改変した。

Sub test()

With ActiveChart
    Set ca = .ChartArea
    With .Shapes.AddShape(msoShapeRectangle, _
            ca.Left, ca.Top, ca.Width, ca.Height)
        .Fill.Transparency = 1
        With .Line
            .DashStyle = msoLineDash
            .Weight = 2
            .ForeColor.RGB = RGB(0, 0, 255)
        End With
        With .TextFrame.Characters
            .Text = "ChartArea"
            .Font.ColorIndex = xlColorIndexAutomatic
        End With
    End With

    Set pa = .PlotArea
    With .Shapes.AddShape(msoShapeRectangle, _
            pa.Left, pa.Top, pa.Width, pa.Height)
        .Fill.Transparency = 1
        With .Line
            .DashStyle = msoLineDash
            .Weight = 2
            .ForeColor.RGB = RGB(0, 255, 0)
        End With
        With .TextFrame.Characters
            .Text = "PlotArea"
            .Font.ColorIndex = xlColorIndexAutomatic
        End With
    End With
    
    With .Shapes.AddShape(msoShapeRectangle, _
            pa.InsideLeft, pa.InsideTop, _
            pa.InsideWidth, pa.InsideHeight)
        .Fill.Transparency = 1
        With .Line
            .DashStyle = msoLineDash
            .Weight = 2
            .ForeColor.RGB = RGB(255, 0, 0)
        End With
        .TextFrame.MarginTop = 15
        With .TextFrame.Characters
            .Text = "Inside PlotArea"
            .Font.ColorIndex = xlColorIndexAutomatic
        End With
    End With

End With

End Sub