折れ線、円、面、ドーナツ、3Dなど、さまざまな種類のExcelグラフの作り方VBA/マクロ便利Tips

業務効率化に役立つVBA/マクロのさまざまなTipsをコード例を交えて紹介していきます。今回は、Shapes.AddChartメソッドを使った、折れ線、円、面、ドーナツ、3Dなどのグラフの表示方法や、Deleteメソッドを使ったグラフの削除の仕方を紹介。

» 2014年09月10日 18時00分 公開
[薬師寺国安PROJECT KySS]
「VBA/マクロ便利Tips」のインデックス

連載目次

※本Tipsの環境:Windows 8.1 Enterprise(64ビット)+Excel 2013

「Excelとグラフ」は「刺身とワサビ」

 今回から「グラフ」に関するTipsを何回かに分けて解説していく。「Excelとグラフ」は「刺身とワサビ」と同じくらいに、切っても切れない関係だ。文字データだけの資料より、視覚的に訴えるグラフの入った資料の方が、見る側の人間にはインパクトを与える。「Excelを利用する以上はグラフに関するVBAもマスターすることは、もう当たり前のことである」と筆者は思う。

 初回の今回は、最も基本的な、「グラフの表示」と「グラフの種類」の2つのTipsについて解説していこう。

最も基本的な「グラフの表示」

 初めはグラフの表示について解説する。グラフの表示については、記事「プレゼン/会議資料に生かす、Excelグラフの基本的な作り方」でも解説しているが、取り扱っているデータが異なるので、おさらいの意味で読んでほしい。

 図1のような「担当者」と「売上金額」が入力されたセルと、「グラフを表示」ボタンがあったとする。「グラフ表示」ボタンはExcelメニューの[挿入]→[図形]と選択して「角丸四角形」で作成している。

図1 「担当者」と「売上金額」が入力されたセルと、「グラフを表示」ボタンを配置する

 図1のデータを基に、「グラフを表示」ボタンをクリックしてグラフを表示してみよう。

 ここからは、マクロを記述してみよう。まず、VBE(Visual Basic Editor)のメニューから、[挿入]→[標準モジュール]と選択する。プロジェクトにModule1が追加されるので、Module1をダブルクリックして、表示されるエディター画面内に、リスト1のコードを記述する。

  1. Option Explicit
  2. Sub グラフを表示()
  3. Range("B3:C14").Select
  4. ActiveSheet.Shapes.AddChart
  5. End Sub
リスト1 「グラフ」を表示するコード

 3行目でセル「B3」から「C14」までを選択している。この記述を忘れると、グラフは表示されないので、注意が必要だ。

 4行目では、アクティブシートに、AddChartメソッドでグラフを追加している。Shapesオブジェクトを使用すると、ワークシート上にオートシェイプを追加できる。VBAにおいてグラフはShapesオブジェクトの1つなのだ。

 このマクロを図1の「グラフを表示」ボタンに関連付け実行すると、図2のように表示される。グラフの位置は筆者が手動で移動させた。

図2 グラフが表示された

グラフを削除するDeleteメソッドと、さまざまな種類のグラフ表示

 グラフの種類についても上記記事で紹介しているが、今回は複数のグラフを比較表示しているので、再確認の意味で読んでほしい。グラフには、膨大な数の種類が存在する。種類については、上記記事の「ChartTypeプロパティで、円や折れ線などさまざまなグラフの種類を設定」を参照してほしい。

 新しく「グラフの種類」シートを追加し、図3のようなデータと、各種グラフのボタンを用意しておく。全てのグラフを表示させても意味がないため、主なグラフだけのボタンを用意した。

図3 グラフ用のデータと各種ボタンを配置している

 先ほど追加したModule1内に各種グラフを表示する、リスト2のコードを記述する。

  1. Sub 折れ線グラフ()
  2. Range("C3:D9").Select
  3. If ActiveSheet.ChartObjects.Count > 0 Then
  4. ActiveSheet.ChartObjects(1).Delete
  5. Else
  6. ActiveSheet.Shapes.AddChart xlLine
  7. End If
  8. End Sub
リスト2 各種グラフを表示するコード

 3行目で、アクティブなシート上にグラフが存在しているかどうかを、ChartObject.Countで判断し、グラフが表示されていない場合は、6行目でグラフの種類を指定して表示している。

 4行目の、「Sheet.ChartObjects(1).Delete」は、アクティブシート上にグラフが表示されていれば、それを削除して、新規にグラフを追加することを意味する。この記述を忘れると、グラフが重複して作成されることになり、何を表示したいのか分からなくなってしまう。

グラフを削除するDeleteメソッドの書式

Sheet.ChartObjects.Delete

 以下は、ほとんど「折れ線グラフ」と同じコードである。ActiveSheet.Shapes.AddChartに指定するグラフの種類が異なるので、異なる個所のみ記述した。

  1. Sub 円グラフ()
  2. ~コード略~
  3. ActiveSheet.Shapes.AddChart xlPie
  4. ~コード略~
  5. End Sub
  1. Sub D円グラフ()
  2. ~コード略~
  3. ActiveSheet.Shapes.AddChart xl3DPie
  4. ~コード略~
  5. End Sub
  1. Sub Dピラミッド縦棒()
  2. ~コード略~
  3. ActiveSheet.Shapes.AddChart xlPyramidCol
  4. ~コード略~
  5. End Sub
  1. Sub 面グラフ()
  2. ~コード略~
  3. ActiveSheet.Shapes.AddChart xlArea
  4. ~コード略~
  5. End Sub
  1. Sub ドーナツグラフ()
  2. ~コード略~
  3. ActiveSheet.Shapes.AddChart xlDoughnut
  4. ~コード略~
  5. End Sub

 ほとんどのプロシージャ内のコードは同じで、AddChartでグラフの種類のみを変えている。

 プロシージャ内で「3D円グラフ」を「三D円グラフ」としているのは、プロシージャ名の先頭に数値を指定すると、エラーになるため漢数字を使用している。

 実行すると、図4のようにいろいろなタイプのグラフが表示される。なおグラフの表示位置は筆者が手動で移動させた。グラフ表示位置の整え方については、次回以降のTipsで説明する。

図4 ボタンクリックで、各種グラフが表示された

いろいろな種類のグラフを使い分けよう

 今回は「グラフ」に関する、最も基本的なTipsを紹介した。図4を見てもらえば、資料の中にグラフがあるのとないのとでは、訴求力が全く違ってくるのが理解しやすいだろう。

 前述した記事「ChartTypeプロパティで、円や折れ線などさまざまなグラフの種類を設定」の表1を見ても分かるように、グラフには無数の種類がある、今回全てを紹介せず主なグラフだけを紹介したが、表1を参考にして、どのようなグラフが作成され、このグラフはどのようなデータに利用したらいいか、読者の皆さん自身で考えていただきたい。きっと、いいアイデアが思い浮かぶはずだ。

 今後数回にわたり、「グラフ」を利用する上いろいろな役に立ちそうなTipsを選んで紹介したいと思う。ぜひ、読者の皆さんの、会議の資料作成時に活用していただければうれしい。

著者プロフィール

薬師寺 国安(やくしじ くにやす) / 薬師寺国安事務所

薬師寺国安事務所代表。Visual Basicプログラミングと、マイクロソフト系の技術をテーマとした、書籍や記事の執筆を行う。

1950年生まれ。事務系のサラリーマンだった40歳から趣味でプログラミングを始め、1996年より独学でActiveXに取り組む。

1997年に薬師寺聖とコラボレーション・ユニット「PROJECT KySS」を結成。

2003年よりフリーになり、PROJECT KySSの活動に本格的に参加。.NETやRIAに関する書籍や記事を多数執筆する傍ら、受託案件のプログラミングも手掛ける。

Windows Phoneアプリ開発を経て、現在はWindowsストアアプリを多数公開中。

Microsoft MVP for Development Platforms - Client App Dev(Oct 2003-Sep 2012)。

Microsoft MVP for Development Platforms - Windows Phone Development(Oct 2012-Sep 2013)。

Microsoft MVP for Development Platforms - Client Development(Oct 2013-Sep 2014)。

Copyright © ITmedia, Inc. All Rights Reserved.

スポンサーからのお知らせPR

Coding Edge 鬯ョ�ォ�ス�ェ髯区サゑスソ�ス�ス�ス�ス�コ髣包スオ隴∵コキ�ク�キ�ス�ケ隴趣ス「�ス�ス�ス�ウ鬩幢ス「�ス�ァ�ス�ス�ス�ュ鬩幢ス「隴趣ス「�ス�ス�ス�ウ鬩幢ス「�ス�ァ�ス�ス�ス�ー

鬮ォ�エ陝キ�「�ス�ス�ス�ャ鬮ォ�エ鬲�シ夲スス�ス�ス�・鬮ォ�エ陝カ�キ�ス�」�ス�ッ髣厄スォ�ス�」

注目のテーマ

4AI by @IT - AIを作り、動かし、守り、生かす
Microsoft & Windows最前線2025
AI for エンジニアリング
ローコード/ノーコード セントラル by @IT - ITエンジニアがビジネスの中心で活躍する組織へ
Cloud Native Central by @IT - スケーラブルな能力を組織に
システム開発ノウハウ 【発注ナビ】PR
あなたにおすすめの記事PR

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。