目次
概要
売上推移や構成比を一目で確認できるよう、データシートとは別に グラフ専用シート(Chart Sheet) を作成したい場面がございます。VBA の Charts.Add2
メソッドを使用すると、ワークブック末尾に独立したグラフシートを簡単に追加し、任意の名前を付与できます。本記事では、基本コードとあわせて設定項目のポイントを丁寧に解説いたします。
前提条件
項目 | 内容 |
---|
対応 Excel | Microsoft 365 または 2016 以降 |
元データ | 任意(本記事ではコード例に直接データ範囲をセル参照) |
マクロ配置 | 標準モジュール |
サンプルコード(VBA)
Sub InsertChartSheet()
Dim chtSheet As Chart ' 作成されるチャートシート
Dim srcRange As Range ' グラフ元データ範囲
'--- グラフ化するデータ範囲を設定(例:シート「Sales」の B2:C13)---
Set srcRange = Worksheets("Sales").Range("B2:C13")
'--- グラフシートをワークブック末尾に追加 ---
Set chtSheet = Charts.Add2 ' Excel 2013 以降の推奨メソッド
chtSheet.Name = "SalesOverviewChart" ' 任意のシート名を設定
'--- グラフタイプを設定(例:集合縦棒)---
chtSheet.ChartType = xlColumnClustered
'--- データ系列を挿入 ---
chtSheet.SetSourceData Source:=srcRange
'--- 見た目を調整(任意)---
With chtSheet.Chart
.HasTitle = True
.ChartTitle.Text = "Monthly Sales Overview"
.Axes(xlCategory).HasTitle = True
.Axes(xlCategory).AxisTitle.Text = "Month"
.Axes(xlValue).HasTitle = True
.Axes(xlValue).AxisTitle.Text = "Amount (USD)"
End With
MsgBox "グラフシート「" & chtSheet.Name & "」を追加しました。", vbInformation
End Sub
コードの主なポイント
行 | 説明 |
---|
9 | Charts.Add2 はグラフシートをブック末尾に挿入し、デフォルトで空のグラフオブジェクトを生成いたします。 |
10 | Name プロパティでシート名を変更できます。既存シートと重複しない名前をご指定ください。 |
13 | ChartType でグラフ形式を選択します。ほかに xlLine , xlPie など多彩な定数がございます。 |
16 | SetSourceData により元データ範囲を一括で系列化します。 |
19–23 | タイトル・軸ラベルを設定すると、読み手に直感的なグラフとなります。 |
応用例
要件 | 実装方法 |
---|
グラフシートをワークブック先頭に挿入したい | Charts.Add2(Before:=Sheets(1)) と Before 引数を指定します。 |
作成済みシートが存在する場合に上書き回避 | シート名重複を WorksheetExists の自作関数で判定し、必要に応じて連番を付与してください。 |
グラフ系列を個別に設定したい | chtSheet.SeriesCollection.NewSeries でシリーズを追加し、Values と XValues を別々に割り当てます。 |
よくある質問
質問 | 回答 |
---|
Charts.Add と Charts.Add2 の違いは何ですか。 | Add2 は Excel 2013 以降で推奨されるメソッドで、一部の新機能に対応しております。 |
グラフシートではなく埋め込みグラフを作りたい場合はどうすればよいですか。 | Worksheets("SheetName").Shapes.AddChart2 を使用すると、シート上にオブジェクトとして挿入できます。 |
まとめ
Charts.Add2
メソッドを利用すれば、VBA からわずか数行で独立したグラフシートを作成し、任意の名称やグラフタイプを設定できます。レポート専用ブックを自動生成する際などに大変有用です。ぜひ業務の自動化にお役立てください。