
【Excel VBA】簡単に表データから折れ線グラフを作成する方法
目次
こんにちは、湯本です。
今回は、Excel VBAでグラフを作成する方法をご紹介します。VBAで実装できれば、データが更新されるたびに対象範囲を選択し直す手間が省け、作業効率が向上します。
用意したデータはコチラ。2022年7月の東京の最高気温と最低気温になります。画像では途中までになっていますが、31日まで用意しています。
では早速やっていきましょう!
Step1 グラフの種類と範囲の指定
まず初めに、作成するグラフの種類を指定する必要があります。今回は折れ線グラフを指定します。グラフに表示する範囲は、表のセルA3からセルC34までとなります。
'グラフの作成 With ActiveSheet.Shapes.AddChart.Chart '折れ線グラフを指定 .ChartType = xlLine 'グラフ範囲を指定 .SetSourceData Cells(3, "A").CurrentRegion End With
.ChartTypeでは、グラフの種類を設定します。設定できる種類の一部を紹介します。
折れ線 | xlLine |
---|---|
集合縦棒 | xlColumnClustered |
集合横棒 | xlBarClustered |
.CurrentRegionは、セルA3を起点に作成されている表データを参照してくれる、便利なプロパティになります。
上記の記述で、以下の折れ線グラフが作成されました。
Step2 グラフの表示位置とサイズの指定
Step1で作成したグラフだと、小さくて見にくいので、見やすいように表示設定をしていきます。まずは、作成したグラフの表示位置とサイズを指定します。
'グラフオブジェクトをオブジェクト変数に格納 Set chartObj = ActiveSheet.ChartObjects(1) With chartObj 'グラフ表示位置とサイズの設定 .Top = Range("G2").Top .Left = Range("G2").Left .Width = 500 .Height = 300 End With
上記の記述で、作成したグラフをセルG2に配置し、サイズを横500px高さ300pxに指定しています。
Step3 グラフの詳細指定
次は、グラフを横幅いっぱいに表示し、さらに見やすくしたいと思います。凡例や目盛り、線色の詳細設定を行っていきます。
'グラフを扱うオブジェクトをセット With .Chart '凡例の表示 .HasLegend = True '凡例をグラフの下に表示 .Legend.Position = xlLegendPositionBottom '最高気温の線を赤色へ変更 .FullSeriesCollection(1).Format.Line.ForeColor.RGB = RGB(255, 0, 0) '最低気温の線を青色へ変更 .FullSeriesCollection(2).Format.Line.ForeColor.RGB = RGB(0, 0, 255) '横軸の表示形式を指定 .Axes(xlCategory).TickLabels.NumberFormatLocal = "mm/dd" '横軸の目盛りを2日間隔に指定 .Axes(xlCategory).MajorUnit = 2 '横軸目盛りの表示角度を90度に指定 .Axes(xlCategory).TickLabels.Orientation = 90 '縦軸の目盛りの種類をなしに指定 .Axes(xlValue).MajorTickMark = xlNone End With
上記の記述で、以下のようにグラフの見栄えが整いました。
Step4 グラフのタイトル表示
次は、作成したグラフにタイトルを表示するための設定を行います。
With chartObj.Chart 'タイトルの表示 .HasTitle = True 'タイトルのを設定 .ChartTitle.Text = "7月の最高気温と最低気温" End With
上記の記述で、グラフタイトルを「7月の最高気温と最低気温」と表示することができました。
Step5 グラフのタイトル設定
最後に、グラフタイトルのフォントサイズと太さの設定を行います。
With .ChartTitle.Format.TextFrame2.TextRange.Font 'タイトルサイズを指定 .Size = 15 'タイトル文字の太さを細字に指定 .Bold = False End With
上記の記述で、グラフタイトルのフォントサイズを15pxにし、太さを細字設定にしています。
これで折れ線グラフの完成です!
今回のコード
階層構造とWith~Endの記述が難しく感じるかもしれませんが、作成手順と構造が理解できればそれほど難しくはありません。今回紹介したコードを以下にまとめましたので、実装するときの参考にしてみてください。
Option Explicit Sub グラフ作成() 'グラフオブジェクトの変数宣言 Dim chartObj As Object 'グラフの作成 With ActiveSheet.Shapes.AddChart.Chart '折れ線グラフを指定 .ChartType = xlLine 'グラフ範囲を制定 .SetSourceData Cells(3, "A").CurrentRegion End With 'グラフオブジェクトをオブジェクト変数に格納 Set chartObj = ActiveSheet.ChartObjects(1) With chartObj 'グラフ表示位置とサイズの設定 .Top = Range("G2").Top .Left = Range("G2").Left .Width = 500 .Height = 300 With .Chart '凡例の表示 .HasLegend = True '凡例をグラフの下に表示 .Legend.Position = xlLegendPositionBottom '最高気温の線を赤色へ変更 .FullSeriesCollection(1).Format.Line.ForeColor.RGB = RGB(255, 0, 0) '最低気温の線を青色へ変更 .FullSeriesCollection(2).Format.Line.ForeColor.RGB = RGB(0, 0, 255) '横軸の表示形式を指定 .Axes(xlCategory).TickLabels.NumberFormatLocal = "mm/dd" '横軸の目盛りを2日間隔に指定 .Axes(xlCategory).MajorUnit = 2 '横軸目盛りの表示角度を90度に指定 .Axes(xlCategory).TickLabels.Orientation = 90 '縦軸の目盛りの種類をなしに指定 .Axes(xlValue).MajorTickMark = xlNone With chartObj.Chart 'タイトルの表示 .HasTitle = True 'タイトルの指定 .ChartTitle.Text = "7月の最高気温と最低気温" With .ChartTitle.Format.TextFrame2.TextRange.Font 'タイトルサイズ .Size = 15 'タイトル細字 .Bold = False End With End With End With End With End Sub
《関連記事》

