今回は円グラフを作成する方法をご説明します。
円グラフを作成する基本的な方法から、詳細設定まで併せてご説明します。
その他のグラフ作成方法や、グラフの詳細設定は次の記事をご覧下さい。
- グラフ操作 グラフの作成と詳細設定をする方法
- 折れ線グラフを作成する
- 棒グラフを作成する
- 散布図グラフを作成する
- 複合グラフを作成する
- 2軸グラフを作成する
- 複合グラフに2軸設定する方法
- 作成済みのグラフのデータ範囲を変更する
- シートに作成済みの埋め込みグラフを取得する
- グラフ(散布図)に近似曲線を追加する
一番最後に簡単なグラフのサンプルコードを載せています
1.円グラフを作成する
もっともシンプルに円グラフを作成する方法は次のように記述します。
円グラフを作成するには「Chart」オブジェクトの「ChartType」を「xlPie」と指定します。
また、「SetSourceData」でデータ範囲を指定しています。
Sub Sample1()
With ActiveSheet.Shapes.AddChart.Chart
.ChartType = xlPie
.SetSourceData Range(Cells(1, 1), Cells(5, 2))
End With
End Sub
2.円グラフの種類
円グラフの種類はいくつかあります。
円グラフ一覧
グラフの種類 | 定数 |
円 | xlPie |
分割円 | xlPieExploded |
3-D円 | xl3Dpie |
分割3-D円 | xl3DPieExploded |
補助円グラフ付き円 | xlPieOfPie |
補助縦棒グラフ付き円 | xlBarOfPie |
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 = xlPie
.SetSourceData Range(Cells(1, 1), Cells(5, 2))
End With
Set ChartObj = ActiveSheet.ChartObjects(1)
With ChartObj
.Name = "Chart1" 'グラフの名前を設定
.Top = 10 '表示位置
.Left = 200 '表示位置
.Width = 400 '幅
.Height = 200 '高さ
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 = xl3DPie
.SetSourceData Range(Cells(1, 1), Cells(5, 2))
End With
Set ChartObj = ActiveSheet.ChartObjects(1)
With ChartObj
.Name = "Chart1" 'グラフの名前を設定
.Top = 10 '表示位置
.Left = 200 '表示位置
.Width = 400 '幅
.Height = 200 '高さ
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