■ グラフを操作しよう!
VBAからExcelのグラフを操作することができます。データ分析の元になる表から、グラフの埋め込みオブジェクトを作成したり、グラフシートを追加することができます。また、作成済みのグラフのグラフの種類を変更したり、タイトルや凡例の表示を変更することもできます。
グラフを使用したシートを、毎月編集したり、修正を加えている場合など、VBAで自動化することで作業を効率化することが可能です。また印刷するために、グラフの体裁や表示サイズなどを手作業で調整している場合など、VBAを利用することで、簡単に編集・修正を加えることが可能になります。
■グラフを作成する方法
シートにグラフの埋め込みオブジェクトを作成したり、グラフシートを追加することができます。
グラフシートを追加する
[書式]
オブジェクト.Add(シート1, シート2, グラフシートの数)
オブジェクトには、Chartsコレクションを指定します。
シート1には、グラフシートを追加したいシートを指定します。指定したシートの前にグラフシートが追加されます。省略するとグラフシートはアクティブなシートの前に挿入されます。
シート2には、グラフシートを追加したいシートを指定します。指定したシートの後にグラフシートが追加されます。省略するとグラフシートはアクティブなシートの前に挿入されます。
グラフシートの数には、追加したいグラフシートの数を指定します。省略すると1が指定されます。
※ 引数シート1と引数シート2は、両方指定することはできません。
例:
Sub Test()
Charts.Add(Sheets("Sheet1")). _
SetSourceData Sheets("Sheet1").Range("A1:D4")
End Sub
| この例では、ワークシートSheet1のA1:D4のセル領域を元にしてグラフを作成し、Sheet1の前にグラフシートを追加します。 |
埋め込みグラフを作成する
[書式]
オブジェクト.Add(左, 上, 幅, 高さ)
オブジェクトには、ChartObjectsコレクションを指定します。
左には、埋め込みグラフの左端の位置を指定します。ポイント単位で数値を指定します。
上には、埋め込みグラフの上端の位置を指定します。ポイント単位で数値を指定します。
幅には、埋め込みグラフの幅を指定します。ポイント単位で数値を指定します。
高さには、埋め込みグラフの高さを指定します。ポイント単位で数値を指定します。
例:
Sub Test()
ActiveSheet.ChartObjects.Add(100, 100, 500, 300). _
Chart.SetSourceData Sheets("Sheet1").Range("A1:D4")
End Sub
| この例では、ワークシートSheet1のA1:D4のセル領域を元に、アクティブシートの左端と上端が100ポイントの位置に、幅500ポイント、高さ300ポイントの埋め込みグラフを作成します。 |
■グラフのデータ範囲を指定する方法
SetSourceDataメソッドを使用することで、グラフの元になるデータ範囲を指定することができます。また、データ系列の方向を指定することもできます。
[書式]
オブジェクト.SetSourceData セル範囲, データ系列
オブジェクトには、Chartオブジェクトを指定します。
セル範囲には、グラフの元になるデータのセル範囲を指定します。
データ系列には、グラフのデータ系列を行方向にするか列方向にするかをXlRowColクラスの定数で指定します。XlRowColクラスの定数は次の通りです。
| 定数 |
内容 |
| xlColumns |
列方向 |
| xlRows |
行方向 |
省略した場合、セル範囲の項目の行数が項目の列数より多い場合は列方向に、同じまたは少ない場合は行方向に、データ系列が設定されます。
例:
Sub Test()
ActiveSheet.ChartObjects("MyChart").Select
ActiveChart.SetSourceData Range("A1:C3"), xlColumns
End Sub
| この例では、アクティブシートにある「MyChart」という名前の埋め込みグラフのデータ範囲を、A1:C3のセル領域に、データ系列を列方向に指定します。 |
※ グラフに名前を設定するには、グラフを選択して名前ボックスから名前を指定する、またはChartオブジェクトのNameプロパティで名前を指定します。
■グラフを編集する方法
グラフの中に含まれるオブジェクト、グラフエリア、軸、タイトル、凡例、データ系列などを編集することができます。
グラフのタイトルを設定する
[書式]
オブジェクト.HasTitle = 値
オブジェクトには、Chartオブジェクトを指定します。
値には、TrueまたはFalseを指定します。Trueの場合、タイトルを表示します。Falseの場合、タイトルを表示しません。
※ タイトルの文字列は、ChartTitleオブジェクトのTextプロパティで指定します。
例:
Sub Test()
ActiveSheet.ChartObjects(1).Chart.HasTitle = True
ActiveSheet.ChartObjects(1).Chart.ChartTitle.Text = "売り上げグラフ"
End Sub
| この例では、アクティブシートの埋め込みグラフのタイトルを「売り上げグラフ」にして、表示します。 |
グラフの凡例を表示する
[書式]
オブジェクト.HasLegend = 値
オブジェクトには、Chartオブジェクトを指定します。
値には、TrueまたはFalseを指定します。Trueの場合、凡例を表示します。Falseの場合、凡例を表示しません。
※ 凡例を表示する位置を指定するには、LegendオブジェクトのPositionプロパティにXlLegendPositionクラスの定数を指定します。XlLegendPositionクラスの定数は次の通りです。
| 定数 |
内容 |
| xlLegendPositionCorner |
隅 |
| xlLegendPositionRight |
右 |
| xlLegendPositionTop |
上 |
| xlLegendPositionBottom |
下 |
| xlLegendPositionLeft |
左 |
例:
Sub Test()
ActiveSheet.ChartObjects(1).Chart.HasLegend = True
ActiveSheet.ChartObjects(1).Chart.Legend.Position = xlLegendPositionTop
End Sub
| この例では、アクティブシートの埋め込みグラフの上部に凡例を表示します。 |
グラフの種類を変更する
[書式]
オブジェクト.ChartType = 値
オブジェクトには、Chartオブジェクトを指定します。
値には、XlChartTypeクラスの定数を指定します。XlChartTypeクラスの主な定数は次の通りです。
| 定数 |
内容 |
| xlLine |
折れ線 |
| xlLineStacked |
積み上げ折れ線 |
| xlPie |
円 |
| xlPieOfPie |
補助円グラフ付き円 |
| xlPyramidBarStacked |
積み上げピラミッド横棒 |
| xlPyramidColClustered |
集合ピラミッド縦棒 |
| xlPyramidColStacked |
積み上げピラミッド縦棒 |
| xlRadar |
レーダー |
| xlRadarFilled |
塗りつぶしレーダー |
| xlXYScatter |
散布図 |
| xlXYScatterLines |
折れ線付き散布図 |
| xlXYScatterSmooth |
平滑線付き散布図 |
| xlArea |
面 |
| xlAreaStacked |
積み上げ面 |
| xlBarClustered |
集合横棒 |
| xlBarOfPie |
補助縦棒グラフ付き円 |
| xlBarStacked |
積み上げ横棒 |
| xlBubble |
バブル |
| xlColumnClustered |
集合縦棒 |
| xlColumnStacked |
積み上げ縦棒 |
| xlConeBarClustered |
集合円錐横棒 |
| xlConeBarStacked |
積み上げ円錐横棒 |
| xlConeColClustered |
集合円錐縦棒 |
| xlConeColStacked |
積み上げ円錐縦棒 |
| xlCylinderBarClustered |
集合円柱横棒 |
| xlCylinderBarStacked |
積み上げ円柱横棒 |
| xlCylinderColClustered |
集合円錐縦棒 |
| xlCylinderColStacked |
積み上げ円錐縦棒 |
| xlDoughnut |
ドーナツ |
| xlDoughnutExploded |
分割ドーナツ |
| xlLineMarkers |
データ マーカー付き折れ線 |
| xlPieExploded |
分割円 |
| xlPyramidBarClustered |
集合ピラミッド横棒 |
例:
Sub Test()
ActiveSheet.ChartObjects(1).Chart.ChartType = xlLine
End Sub
| この例では、アクティブシートの埋め込みグラフの種類を、折れ線グラフに変更します。 |
以上、VBAからグラフを操作する方法について解説しました。
グラフオブジェクトは、視覚的にデータ分析を行うことのできる大変便利なオブジェクトです。VBAからグラフを操作することで、さらに使いやすく便利にグラフを利用することができるでしょう。
ぜひ今回のテクニックを利用して、あなたの業務の効率化に役立ててください。
|