VBA講座 AddChartメソッドで 3 次関数のグラフを作成します

 VBA 入門講座の記事です。
 今回は VBA でグラフを作成する方法について解説します。

 ≫ [Amazon Excel 書籍] 今日から使える Excel VBA 2013/2010/2007/2003対応
 ≫ [Amazon VBA 書籍] 達人が教える Excelグラフテクニック101

3 次関数のグラフを表示するマクロ

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

Sub グラフ作成()

 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

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

 VBA3次関数のグラフ

マクロの構造

 最初に 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メソッド

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

スポンサーリンク
末尾広告
末尾広告

コメントをどうぞ

メールアドレスが公開されることはありません。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください