数値軸を設定する


上図のような表から折れ線グラフを作成すると、下図のようになります。

グラフの、下の方が空いていますね。こんなときは、数値軸の最小値を設定してやると、見栄えがよくなります。

数値軸の最小値と最大値は、それぞれ、次のプロパティに値を設定します。

  • 最小値:MinimumScaleプロパティ
  • 最大値:MaximumScaleプロパティ

次のコードは、数値軸の最小値を150に設定します。

Sub Sample()
    With ActiveSheet.ChartObjects(1).Chart
        .Axes(xlValue).MinimumScale = 150
    End With
End Sub

結果は、上図のようになります。

Excelがグラフを作るとき、数値軸の最小値と最大値は、標準では「自動」になります。数値軸の最小値と最大値を「自動」に設定するときは、次のプロパティを使います。

  • MinimumScaleIsAutoプロパティ:Trueを設定すると、最小値が「自動」になります
  • MaximumScaleIsAutoプロパティ:Trueを設定すると、最大値が「自動」になります

次のコードは、数値軸の最小値を「自動」に設定します。

Sub Sample()
    With ActiveSheet.ChartObjects(1).Chart
        .Axes(xlValue).MinimumScaleIsAuto = True
    End With
End Sub

最小値の値を設定するMinimumScaleプロパティと、最小値を「自動」に設定するMinimumScaleIsAutoプロパティは、それぞれ次のような関係です。

  • 新しくグラフを作成した直後は
    MinimumScaleIsAutoプロパティ は True (「自動」になっている)
    MinimumScaleプロパティ は 0
  • 最小値に値を設定すると
    MinimumScaleIsAutoプロパティ は False (値を設定すると自動的にFalseになる)
    MinimumScaleプロパティ は 設定した値
  • 最小値を「自動」に設定すると
    MinimumScaleIsAutoプロパティ は True (「自動」になる)
    MinimumScaleプロパティ は 0 (直前まで設定されていた値は消えてしまう)

もちろん、最大値についても同じです。

Excel 2003のコードは動くか

Excel 2003で数値軸の値を設定すると、次のようなコードが記録されます。ここでは「自動」を150に設定しました。なお、グラフ名はインデックス値に編集しています。

Sub Macro()
    ActiveSheet.ChartObjects(1).Activate
    ActiveChart.Axes(xlValue).Select
    With ActiveChart.Axes(xlValue)
        .MinimumScale = 150
        .MaximumScaleIsAuto = True
        .MinorUnitIsAuto = True
        .MajorUnitIsAuto = True
        .Crosses = xlAutomatic
        .ReversePlotOrder = False
        .ScaleType = xlLinear
        .DisplayUnit = xlNone
    End With
End Sub

このコードは、Excel 2007でも問題なく動作します。

もっとも、まさかマクロ記録したコードを調べもせず、そこに何が記録されたかを読みもしないで、そのまま使っているような人はいませんよね。上記の、記録されたコードは、最小値を設定しただけなのに、他の関係ないプロパティまでもが、あれこれと記録されています。これは、最小値の設定を[軸の書式設定]ダイアログボックスで行ったからです。

最小値を設定するだけなら、これでいいです。

Sub Macro()
    ActiveSheet.ChartObjects(1).Chart.Axes(xlValue).MinimumScale = 150
End Sub

もちろん、Excel 2003でもExcel 2007でも、問題なく動作します。