Excel VBA 折れ線グラフ(Chart)を作成する

グラフ作成/操作

今回は折れ線グラフを作成する方法をご説明します。

折れ線グラフを作成する基本的な方法から、詳細設定まで併せてご説明します。

その他のグラフ作成方法や、グラフの詳細設定は次の記事をご覧ください。

一番最後にまとめたサンプルコードを記載しています。

1.折れ線グラフを作成する

もっともシンプルに折れ線グラフを作成する方法は次のように記述します。

折れ線グラフを作成するには「Chart」オブジェクトの「ChartType」を「xlLine」と指定します。

また、「SetSourceData」でデータ範囲を指定しています。

Sub Sample1()

With ActiveSheet.Shapes.AddChart.Chart

    .ChartType = xlLine
    .SetSourceData Range(Cells(1, 1), Cells(13, 5))

End With

End Sub

2.折れ線グラフの種類

折れ線グラフの種類はいくつかあります。

グラフの種類 定数
折れ線xlLine
データマーカー付き折れ線xlLineMarkers
積み上げ折れ線xlLineStacked
データマーカー付き積み上げ折れ線xlLineMarkersStacked
100%積み上げ折れ線xlLineStacked100
データマーカー付き100%積み上げ折れ線xlLIneMarkersStacked100
3-D折れ線xl3DLine

3.グラフの詳細設定する

作成したグラフを指定するには「ChartObject(番号)」もしくは、「 ChartObject(“グラフ名”)

で指定する事ができます。

表示位置

上記で作成したグラフの表示位置を指定します。

グラフの位置を設定するには、「ChartObject」のTopプロパティLeftプロパティで設定します。

セルか座標で表示位置を指定できます。

セルで指定
Sub Sample2()

Dim ChartObj    As Object

Set ChartObj = ActiveSheet.ChartObjects(1)

With ChartObj

    .Top = Range("C2").Top
    .Left = Range("C2").Left
    
End With

End Sub
x,y座標で指定
Sub Sample3()

Dim ChartObj    As Object

Set ChartObj = ActiveSheet.ChartObjects(1)

With ChartObj

    .Top = 100
    .Left = 20
    
End With

End Sub

大きさを指定する

グラフの大きさを設定するには、「ChartObject」のWidthプロパティHeightプロパティで設定します。

セル範囲と数値で指定することができます。

セルで指定する
Sub Sample4()

Dim ChartObj    As Object

Set ChartObj = ActiveSheet.ChartObjects(1)

With ChartObj

    .Width = Range("G2:L13").Width
    .Height = Range("G2:L13").Height
    
End With

End Sub
数値で大きさを指定する
Sub Sample5()

Dim ChartObj    As Object

Set ChartObj = ActiveSheet.ChartObjects(1)

With ChartObj

    .Width = 500
    .Height = 300
    
End With

End Sub

グラフの名前

グラフの名前を設定するには、「ChartObject」のNameプロパティで設定します。

「グラフ 1」を「Chart1」へ変更します。

Sub Sample6()

Dim ChartObj    As Object

Set ChartObj = ActiveSheet.ChartObjects("グラフ 1")

With ChartObj

    .Name = "Chart1"
    
End With

End Sub

タイトルを指定する

グラフのタイトルを指定するには、「Chart」オブジェクトのHasTitleプロパティでタイトルを表示し、「 ChartTitle」オブジェクトのTextプロパティでタイトル名を指定します。

.ChartObjects.Chart.ChartTitle.Format.TextFrame2.TextRange.Font」でタイトルのサイズやフォントサイズ、色を指定する場合は次の様に記述します。

次のコードは、「with ChartObjects.Chart」の中に、入れ子で「ChartTitle.Format.TextFrame2.TextRange.Font」と指定しているため分かれています。

タイトルの色は「グラフ操作 グラフの作成と詳細設定をする方法」の「色一覧」をご覧ください。

Sub Sample7()

Dim ChartObj    As Object

Set ChartObj = ActiveSheet.ChartObjects(1)

With ChartObj.Chart

    .HasTitle = True
    .ChartTitle.Text = "年間売上グラフ"

  With .ChartTitle.Format.TextFrame2.TextRange.Font
    
        .Size = 10
        .Fill.ForeColor.ObjectThemeColor = 6 'msoThemeColorAccent2でもOK
        
    End With
    
End With

End Sub

凡例を操作する

凡例は「Chart」オブジェクトの「Chart.HasLegend 」をTrue/Falseで表示を指定して、「Chart.Legend.Position」プロパティで表示位置を指定します。

凡例の色は「ChartObjects.Chart.Legend.Format.Fill」の「.Visible = msoTrue」で凡例を塗りつぶす指定をします。

.ForeColor.RGB」で色を指定します。

凡例の表示位置は「グラフ操作 グラフの作成と詳細設定をする方法」の「表示位置一覧」をご覧ください。

Sub Sample8()

Dim ChartObj    As Object

Set ChartObj = ActiveSheet.ChartObjects(1)

With ChartObj.Chart
    
    .HasLegend = True '表示する
    .Legend.Position = xlLegendPositionBottom '表示位置

    With ChartObj.Chart.Legend.Format.Fill
    
        .Visible = msoTrue '塗りつぶし設定
        .ForeColor.RGB = RGB(255, 0, 0) '色指定
    
    End With
    
End With

End Sub

4.折れ線グラフサンプルコード

折れ線グラフの何種類か詳細設定も含めたサンプルコード紹介です。

データは「1.折れ線グラフを作成する」で使用したデータを使います。

各オブジェクトをWithで入れ子にしているのがポイントになります。

シンプルな折れ線グラフ

Sub Sample9()

Dim ChartObj    As Object

With ActiveSheet.Shapes.AddChart.Chart

    .ChartType = xlLine
    .SetSourceData Range(Cells(1, 1), Cells(13, 5))
    
End With

Set ChartObj = ActiveSheet.ChartObjects(1)

With ChartObj

    .Name = "Chart1" 'グラフの名前を設定
    .Top = 10 '表示位置
    .Left = 300 '表示位置
    .Width = 600 '幅
    .Height = 250 '高さ
    
    With .Chart
        
        .HasTitle = True 'タイトル設定
        .ChartTitle.Text = "年間売上グラフ" 'タイトル文字列
        
        With .ChartTitle.Format.TextFrame2.TextRange.Font
        
            .Size = 10 'タイトル文字サイズ
            .Fill.ForeColor.ObjectThemeColor = 6 'タイトル文字色
            
        End With
        
        .HasLegend = True '凡例表示
        .Legend.Position = xlLegendPositionRight '凡例表示位置(右側)
    
        With ChartObj.Chart.Legend.Format.Fill
        
            .Visible = msoTrue '塗りつぶし設定
            .ForeColor.RGB = RGB(217, 217, 217) '色指定
        
        End With
        
    End With

End With

End Sub

3-D折れ線グラフ

Sub Sample10()

Dim ChartObj    As Object

With ActiveSheet.Shapes.AddChart.Chart

    .ChartType = xl3DLine
    .SetSourceData Range(Cells(1, 1), Cells(13, 5))
    
End With

Set ChartObj = ActiveSheet.ChartObjects(1)

With ChartObj

    .Name = "Chart1" 'グラフの名前を設定
    .Top = 10 '表示位置
    .Left = 300 '表示位置
    .Width = 600 '幅
    .Height = 250 '高さ
    
    With .Chart
        
        .HasTitle = True 'タイトル設定
        .ChartTitle.Text = "年間売上グラフ" 'タイトル文字列
        
        With .ChartTitle.Format.TextFrame2.TextRange.Font
        
            .Size = 10 'タイトル文字サイズ
            .Fill.ForeColor.ObjectThemeColor = msoThemeColorDark1 'タイトル文字色
            
        End With
        
        .HasLegend = True '凡例表示
        .Legend.Position = xlLegendPositionRight '凡例表示位置(右側)
        
    End With

End With

End Sub
タイトルとURLをコピーしました