Excel VBAでグラフを生成・編集する際に重要となるのが、グラフの種類の指定です。どんなデータをどのように見せたいかによって「縦棒」「折れ線」「円」「散布図」などの形式を選び、VBAでは Chart.ChartType プロパティに定数(例:xlColumnClustered)を指定することで種類を制御します。
ここでは代表的なグラフ種類を解説し、VBAでの設定方法と、注意すべきポイントを紹介します。
目次
1. グラフの種類を設定する基本構文
グラフ種類の設定には、以下のように ChartType プロパティを使います。
With chtObj.Chart
.ChartType = xlColumnClustered '集合縦棒グラフ
.SetSourceData Source := Range("A1:B5") 'データ範囲
End With
このように、先にグラフを作成(例えば ChartObjects.Add で)しておき、その後に .ChartType に定数を指定します。 ChartType には多数の種類の定数が存在します。
例として:
xlColumnClustered→ 集合縦棒グラフ(よく使う)xlLine→ 折れ線グラフxlPie→ 円グラフxlXYScatter→ 散布図(X-Y)
2. 代表的なグラフ種類と定数例
以下は、VBAでよく使われるグラフ種類とその定数例をまとめたものです。
| グラフ種類 | VBA定数(例) | 用途・特徴 |
|---|---|---|
| 縦棒グラフ(集合) | xlColumnClustered | 複数データ系列を並べて比較する典型的なグラフ。 |
| 縦棒グラフ(積み上げ) | xlColumnStacked | 順に積み上げて全体と構成比を示す。 |
| 折れ線グラフ | xlLine | 時系列変化や傾向を示す。 |
| 円グラフ | xlPie | 各項目が全体に占める比率を示す。 |
| 散布図 | xlXYScatter | X軸・Y軸両方の数値を持つデータの関係を見る。 |
この他にも多くのバリエーション(3D表示、100%積み上げ、レーダーなど)があります。
コード例としては:
Sub ExampleChartTypes()
Dim chtObj As ChartObject
Set chtObj = ActiveSheet.ChartObjects.Add(100, 50, 400, 250)
With chtObj.Chart
.ChartType = xlPie '円グラフに設定
.SetSourceData Source:=Range("A1:B5")
End With
End Sub
3. グラフ種類を変更するケース:実務で考えるポイント
実務でVBAを使ってグラフを自動生成・更新する際には、以下のような観点でグラフ種類を選ぶと良いです。
- 目的に合った形式を選ぶ
比較が目的なら「縦棒」、変化の傾向が目的なら「折れ線」、比率を示したいなら「円」など。 - 系列の数/データ構成を考慮
データ系列が多ければ縦棒か積み上げ縦棒、2つの数値変数なら散布図。 - 見やすさ・読み取りやすさ
円グラフは項目が少ない方が分かりやすい。多数項目なら縦棒などが好ましい。 - コードの可読性・保守性
.ChartType = xlColumnClusteredなどの定数で種類を明確に指定しておくと、将来変更しやすくなります。
4. VBAで “系列別にグラフ種類を変える” 方法
グラフ全体の種類だけでなく、データ系列(SeriesCollection)ごとに種類を変えることも可能です。例えば、縦棒+折れ線の複合グラフを作成したい場合など。
コード例:
Dim chtObj As ChartObject
Set chtObj = ActiveSheet.ChartObjects.Add(100, 50, 400, 250)
With chtObj.Chart
.SetSourceData Source:=Range("A1:C6")
.SeriesCollection(2).ChartType = xlLine '第2系列を折れ線グラフに
End With
コードの動き
ActiveSheet.ChartObjects.Add(100, 50, 400, 250)→ シートに新しいグラフオブジェクトを追加。SetSourceData Source:=Range("A1:C6")→ A1:C6 をデータ範囲に指定。- A列:カテゴリ(横軸ラベル)
- B列:第1系列(既定で縦棒)
- C列:第2系列(折れ線に変更予定)
.SeriesCollection(2).ChartType = xlLine→ 第2系列だけ折れ線グラフに変更。
注意点
SetSourceDataを使うと、最初は「すべて同じ種類のグラフ」で作成されます(既定は縦棒)。- その後に
SeriesCollection(2).ChartType = xlLineを指定することで「複合グラフ」になります。 - 系列の順番はデータ範囲の列順に依存します。
- B列 → SeriesCollection(1)
- C列 → SeriesCollection(2)
このようにして、各系列に設定を加えることで、複雑な見せ方もVBAで自由に制御できます。
5. おすすめの設定手順
コードを書く順序としては:
- グラフオブジェクトを追加(
ChartObjects.Add) SetSourceDataでデータ範囲を設定.ChartType = 定数で種類を指定- 必要に応じて系列別の種類変更・軸設定・タイトル設定
6. まとめ
- VBAでグラフの種類を指定するには、
Chart.ChartType = 定数を使うのが基本。 - 代表的な定数には
xlColumnClustered(縦棒)、xlLine(折れ線)、xlPie(円)などがあります。 - 実務では「目的・データ構成・読みやすさ」を考えて種類を選び、系列別設定も活用すると柔軟なグラフが作れます。
コメント