■ グラフを操作しよう!
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からグラフを操作することで、さらに使いやすく便利にグラフを利用することができるでしょう。
ぜひ今回のテクニックを利用して、あなたの業務の効率化に役立ててください。
|