【VBA】AddChartメソッドでシートにグラフを挿入

 VBA入門講座 の記事です。今回は Shapes コレクションの AddChart メソッドを使って、シートにグラフを挿入する方法について解説します。

AddChart メソッドでシートにグラフを挿入する

 三次関数 y = x3 のグラフを表示するマクロを作成します。
 x, y データの作成からグラフの表示まで、全てオートマティックに実行させます。

'[VBA] データの作成とグラフの挿入

Sub Create_Chart()

  Dim myrange As Range
  Dim i As Double

  i = -3
  Range("A1") = "x"
  Range("B1") = "y"
  Range("A2").Select

  'A列とB列にデータを作成
  Do While i <= 3.1
    ActiveCell.Value = i
    ActiveCell.Offset(, 1).Value = i ^ 3
    ActiveCell.Offset(1).Select
    i = i + 0.2
  Loop

  'セル A2 を Range型変数 myrange に格納
  Set myrange = Range("A2").CurrentRegion

  'グラフの追加(種類は平滑線)
  '左から100,上から100,幅200,高さ300
  With ActiveSheet.Shapes _
  .AddChart(xlXYScatterSmoothNoMarkers, 100, 100, 200, 300).Chart

    'グラフデータとしてmyrangeを選択
    .SetSourceData myrange

    'グラフタイトルの設定
    .ChartTitle.Text = "y=x^3"

    '凡例は非表示
    .HasLegend = False

    'グラフの色は赤
    .FullSeriesCollection(1).Format.Line.ForeColor.RGB = RGB(255, 0, 0)

    'プロットエリアを枠線で囲む
    .PlotArea.Border.LineStyle = xlContinuous

    'x軸の設定(最小値-2,最大値2,目盛交差)
    With .Axes(xlCategory)
      .MinimumScale = -2
      .MaximumScale = 2
      .MajorTickMark = xlTickMarkCross
    End With

    'y軸の設定(目盛り線なし,最小値-6,最大値6,目盛交差)
    With .Axes(xlValue)
      .HasMajorGridlines = False
      .MinimumScale = -6
      .MaximumScale = 6
      .MajorTickMark = xlTickMarkCross
    End With

  End With

End Sub

 Create_Chart() を実行すると、次のようなグラフが表示されるはずです。

 VBA3次関数のグラフ

 Create_Chart の構造について簡単に解説しておきます。最初に x, y のデータを作成するために Do While … Loop ステートメントを使っています。-3 から 3 まで 0.2 刻みで x の値をセルに出力していますが、

Do While i <= 3.1

というように、その上限を 3.1 にしてあります。10 進数 0.2 を 2 進数に変換すると丸め誤差が生じてしまうため、上限を 3 にしてしまうと 2.8 までしか出力されません。このように上手く 2 進数変換されない刻み幅でループさせるときは step 数より少ない数を上限に加えて調整します。

 このマクロの核となる部分は Excel2007 から追加された Shapesコレクションの AddChart メソッドです。

オブジェクト.AddChart(type, Left, Top, Width, Height)

 type にはグラフの種類を指定します。今は平滑線を描きたいので「 xlXYScatterSmoothNoMarkers 」を指定しています。他によく使用されるグラフの種類としては次のようなものがあります。

xlColumnClustered 集合縦棒
xlLine 折れ線
xlPie 円グラフ
xlXYScatter 散布図

 Left, Top, Width, Height はそれぞれ下の図にあるような長さを指定します。

 VBAのAddchartメソッド

 以降の記述はグラフの色や凡例表示の有無、軸の設定など細々とした調整ですので、コメント文を参考にしながら自分で色々といじってみてください。

エクセルや数学に関するコメントをお寄せください