【ExcelVBA入門】グラフを作成する方法について徹底解説!

こんにちは、フリーランスエンジニア兼ライターのワキザカ サンシロウです。

皆さんは、VBAでグラフを操作する方法を知っていますか?

グラフ作成、コピー、削除など、グラフを使うときに覚えておくと便利な操作は多いです。

そこで今回は、

・グラフを作成する方法

といった基礎的なことから、

・グラフの行列を入れ替える方法

・グラフタイトル・軸を設定する方法

・ファイル読み込み機能と組み合わせて自動化ツールを作る方法

といった応用的な方法まで、徹底的に解説します!

目次

VBAでグラフを操作する方法

最初に、グラフを操作する方法について解説します!

グラフ作成方法

まずは、グラフを作成する方法です。

グラフを作成する場合は、以下のように書きます。

グラフ作成方法:

With ActiveSheet.Shapes.AddChart.Chart
    .ChartType = グラフの種類
    .SetSourceData Rangeのセル範囲
End With

グラフの種類に設定する値一覧:

Noグラフの種類
1xlColumnClustered集合縦棒
2xlLine 折れ線
3xlPie
4xlDoughnutドーナツ
5xlArea
6xlXYScatter散布図
7xlRadarレーダー
※グラフの種類はとても多いので、一部抜粋しています。

棒グラフを作成するサンプルコードを用意しました。

Excelデータ:

サンプルコード:

Sub Test1()
  
  With ActiveSheet.Shapes.AddChart.Chart
    '棒グラフ追加
    .ChartType = xlColumnClustered
    .SetSourceData Range("A1:G8")
  End With

End Sub

実行結果:

このように、簡単にグラフを作ることができます。

行列を入れ替える方法

先ほどグラフはX軸が言語、Y軸が名前になっていますが、X軸が名前の方が誰がどの言語で何点取っているかわかりやすいですよね。

行列を入れ替えれば簡単に変更することができるので、おすすめです!

行列を入れ替える方法:

Select Case .PlotBy
  Case xlRows
    .PlotBy = xlColumns
  Case xlColumns
    .PlotBy = xlRows
End Select

先ほどのコードを書き換えると、以下のようになります。

行列入れ替え後のコード:

Sub Test2()
  
  With ActiveSheet.Shapes.AddChart.Chart
    '棒グラフ追加
    .ChartType = xlColumnClustered
    .SetSourceData Range("A1:G8")
    
    '行列入れ替え
    Select Case .PlotBy
      Case xlRows
        .PlotBy = xlColumns
      Case xlColumns
        .PlotBy = xlRows
    End Select
  End With

End Sub

実行結果:

グラフタイトル設定方法

グラフ作成後は、グラフのタイトルを設定しますよね。

グラフタイトルを追加する場合は、以下のように書きます。

グラフタイトル追加方法

.HasTitle = True       'グラフタイトルの追加
.ChartTitle.Text = ""  'グラフタイトルの変更

先ほどのコードに追加すると、以下のようになります。

グラフタイトル追加後のコード:

Sub Test3()
  
  With ActiveSheet.Shapes.AddChart.Chart
    '棒グラフ追加
    .ChartType = xlColumnClustered
    .SetSourceData Range("A1:G8")
    
    'グラフタイトル追加
    .HasTitle = True                            'グラフタイトルの追加
    .ChartTitle.Text = "ユーザー別・言語別点数一覧" 'グラフタイトルの変更

    '行列入れ替え
    Select Case .PlotBy
      Case xlRows
        .PlotBy = xlColumns
      Case xlColumns
        .PlotBy = xlRows
    End Select
  End With

End Sub

実行結果:

軸設定方法

データは軸の最小値、最大値を設定したほうが見栄えが良くなりますよね。

軸の最小値、最大値は以下のように書くことで設定できます。

軸の最小値・最大値の設定方法:

.Axes(xlValue).MinimunScale = 値
.Axes(xlValue).MaximumScale = 値

今回は点数なので、0点を最小値、100点を最大値に変更しました。

軸の最小値・最大値変更後のコード:
Sub Test4()
  
  With ActiveSheet.Shapes.AddChart.Chart
    '棒グラフ追加
    .ChartType = xlColumnClustered
    .SetSourceData Range("A1:G8")
    
    'グラフタイトル追加
    .HasTitle = True                                'タイトルの追加
    .ChartTitle.Text = "ユーザー別・言語別点数一覧" 'タイトル名の変更
    
    '軸の最小値・最大値変更
    .Axes(xlValue).MaximumScale = 100
    .Axes(xlValue).MinimumScale = 0
    
    '行列入れ替え
    Select Case .PlotBy
      Case xlRows
        .PlotBy = xlColumns
      Case xlColumns
        .PlotBy = xlRows
    End Select
  End With

End Sub

実行結果:

グラフの参照範囲変更方法

グラフ作成後に、参照範囲を変更したいケースもありますよね。

参照範囲を変更する場合は、以下のように書きます。

参照範囲変更方法:

.SetSourceData Source:=参照範囲をRangeで指定

先ほどのコードに追加すると、以下のようになります。

参照範囲を変更後のコード:

Sub Test5()
  
  With ActiveSheet.Shapes.AddChart.Chart
    '棒グラフ追加
    .ChartType = xlColumnClustered
    .SetSourceData Range("A1:G8")
    
    'グラフタイトル追加
    .HasTitle = True                                'タイトルの追加
    .ChartTitle.Text = "ユーザー別・言語別点数一覧" 'タイトル名の変更
    
    '軸の最小値・最大値変更
    .Axes(xlValue).MaximumScale = 100
    .Axes(xlValue).MinimumScale = 0
    
    '参照範囲の変更
    .SetSourceData Source:=Range("A1:D8")
    
    '行列入れ替え
    Select Case .PlotBy
      Case xlRows
        .PlotBy = xlColumns
      Case xlColumns
        .PlotBy = xlRows
    End Select
  End With

End Sub

実行結果:

合わせて覚えておくと便利なマクロの記録とは

ここまでグラフを作成する方法を解説してきましたが、グラフの種類は棒グラフ以外にもたくさんありますよね。

ChartTypeで指定できるものの、種類が多すぎるためすべて覚えるのは難しいです。

そんな時におすすめなのが、マクロの記録機能です。

マクロの記録を使えば、グラフ作成の操作を自動でVBAのコードに変換することができます。

今回解説したグラフタイトル、軸変更以外にも様々な操作をVBAのコードにすることができるので、事前に作るイメージが決まっている場合はマクロの記録を使うのがおすすめです!

以下で使い方を詳しく解説しているので、気になる方は見てみてくださいね!

【ExcelVBA入門】マクロの記録を使って簡単にマクロを作る方法とは
更新日:2024年4月29日

ファイル読み込み機能を組み合わせて自動化ツールを作る方法

グラフ作成方法とあわせてファイルを読み込む方法を覚えておけば、「CSVファイル読み込み→取り込んだデータから自動でグラフ作成」のような、自動化ツールが作れるようになります。

自動化ツールができれば、作業時間を大幅に短縮することができるので、合わせて覚えておくのがおすすめです!

ファイル読み込み方法については以下で詳しく解説しているので、気になる方は以下を見てみてくださいね!

【ExcelVBA入門】QueryTablesメソッドで高速にファイルを読み込む方法
更新日:2024年4月29日

補足:作成したグラフを画像にして保存する方法

作成したグラフはExcelだけでなくPowerPointやWordなど別の資料作成に使うケースもよくありますよね。

作成したグラフは以下のように書くことで、簡単に画像保存することができるので、覚えておくのがおすすめです!

グラフを画像で保存するサンプルコード:

Sub Test5()
  ActiveSheet.ChartObjects(“グラフの名前”).Chart.Export _
  ThisWorkbook.Path & "保存するファイル名.jpg"
End Sub

グラフの名前は、以下のようにExcel上でグラフを選択すると、確認することができます。

まとめ

今回は、VBAでグラフを作る方法について解説しました。

VBAでグラフを作ることができれば、データから自動でグラフを作るツールを作れるようになります。

使い方も簡単なので、ぜひ使ってみてくださいね!

この記事を書いた人

北海道出身の30歳で、フリーランスエンジニア兼テックライターとして活動中。新卒入社したメーカー系のIT企業で、システムエンジニアとして約5年勤務。

Webアプリ、業務アプリ開発において、要件定義 ~ 運用保守まで様々な経験あり。また3歳の娘がいる1児のパパで、日々娘との時間を確保するために仕事を頑張っています!
侍エンジニアでは、【誰でもわかるレベルのわかりやすさ】を意識して、記事を執筆中。

目次