【VBA】グラフ(Chart)を作成する

VBAから
 ・グラフ(Chart)を作成
できます!

PR

VBAコード

ここでは例として、
 ・シート「data」のセル「B2」から続く一連の範囲のデータを使用して
 ・折れ線グラフ(Chart)を作成
します。

セル「B2」から続く一連の範囲
セル「B2」から続く一連の範囲


また作成したグラフ(Chart)の
 ・タイトルを「売上データ」
 ・タイトルのフォントサイズを「12」
と設定します。

Option Explicit

Sub sample()
    
    Dim ws As Worksheet
    Dim topPosition As Double
    Dim leftPosition As Double
    Dim width  As Double
    Dim height As Double
    Dim chartObj As ChartObject
    Dim chart As chart
    
    'グラフを作成するシートを指定
    Set ws = Worksheets("data")
    
    'グラフを表示させる位置を取得 ※例としてセル「G2」の位置を取得
    With ws.Range("G2")
        leftPosition = .Left
        topPosition = .Top
    End With
    
    'グラフの横と縦のサイズを設定
    width = 250
    height = 180
    
    'ChartObjectオブジェクトを作成
    Set chartObj = ws.ChartObjects.Add(leftPosition, topPosition, width, height)
    
    'ChartObjectオブジェクトの名前を設定
    chartObj.Name = "売上推移"
        
    'Chartオブジェクト(グラフ)を作成
    Set chart = chartObj.chart
    
    With chart
        'グラフの作成元としてセル「B2」から一覧の範囲を指定
        .SetSourceData Source:=ws.Range("B2").CurrentRegion
        'グラフの種類を「折れ線グラフ」に指定
        .ChartType = XlChartType.xlLine
        'グラフのタイトルを表示
        .HasTitle = True
        'グラフのタイトルを設定
        .ChartTitle.Text = "売上データ"
        'グラフのタイトルのフォントサイズを設定
        .ChartTitle.Font.Size = "12"
    End With
    
    '後片付け
    Set chart = Nothing
    Set chartObj = Nothing
    
End Sub

「グラフ(Chart)を表示させる位置」として、セル「G2」の位置を取得します(17~20行目)。
※状況に応じて別のセルへ変更してください。

「グラフ(Chart)」の「横」と「縦」のサイズを設定します(23~24行目)。
※上記では「横:250」、「縦:180」と設定しています。
※状況に応じて好きなサイズへ変更してください。

「Worksheetオブジェクト」の「ChartObjects」メソッドにより、「ChartObjectsオブジェクト」を取得します(27行目)。

「ChartObjectsオブジェクト」の「Add」メソッドにより、「ChartObjectオブジェクト」を取得します(27行目)。

「ChartObjectオブジェクト」の「Name」プロパティに、「Chartオブジェクトの名前」を設定します(30行目)。
※上記では「売上推移」と設定しています。
※「Chartオブジェクトの名前」の設定は任意です。必須ではないです。
※「Chartオブジェクトの名前」を設定することで、削除する際に名前を指定した削除ができます。

「ChartObjectオブジェクト」の「chart」プロパティにより、「Chartオブジェクト」を取得します(33行目)。

「Chartオブジェクト」の「SetSourceData」メソッドで
 ・グラフ(Chart)の作成元として
 ・セル「B2」から一覧の範囲を指定
します(37行目)。
※名前付き引数「Source」に指定します。

「Chartオブジェクト」の「ChartType」プロパティに、「グラフ(Chart)の種類」を指定します(39行目)。
※上記では列挙体「XlChartType」を使用して「折れ線グラフ」を指定しています。

「Chartオブジェクト」の「HasTitle」プロパティに、「True」を設定することで、「タイトルを表示」にします(41行目)。
※「タイトルを表示」にすることで、後述の「グラフ(Chart)のタイトル」が設定できるようになります。

「Chartオブジェクト」の「ChartTitle」プロパティにより、「ChartTitleオブジェクト」を取得します(43行目)。

「ChartTitleオブジェクト」の「Text」プロパティに、「グラフ(Chart)のタイトル」を設定します。(43行目)。
※上記では「売上データ」と設定しています。

「ChartTitleオブジェクト」の「Font」プロパティに、「フォントサイズ」を指定します(45行目)。
※上記では「12」を指定します。
※この「Font」プロパティは、何故か公式サイト上に記載されていません…。
※ただ使用できる以上、存在することは確かです。

PR

実行結果

グラフ(Chart)を作成できました。

実行結果
実行結果
PR

参考①

VBAからグラフ(Chart)を削除することもできます。

PR

参考②

上記で使用した以下の詳細は、公式サイトをご確認ください。

●「Worksheetオブジェクト」の「ChartObjects」メソッド


●「ChartObjectsオブジェクト」の「Add」メソッド


●「ChartObjectオブジェクト」の「Name」プロパティ


●「ChartObjectオブジェクト」の「chart」プロパティ


●「Chartオブジェクト」の「SetSourceData」メソッド


●「Chartオブジェクト」の「ChartType」プロパティ


●列挙体「XlChartType」


●「Chartオブジェクト」の「HasTitle」プロパティ


●「Chartオブジェクト」の「ChartTitle」プロパティ


●「ChartTitleオブジェクト」の「Text」プロパティ


●「ChartTitleオブジェクト」の「Font」プロパティ
公式サイト上に記載されていません。理由は不明です。