連載
» 2016年08月26日 05時00分 公開

Excelマクロ/VBAで始める業務自動化プログラミング入門(8):Excelグラフの基本的な作り方――わかりやすい効果的なプレゼン/会議資料作成のために (4/4)

[薬師寺国安,PROJECT KySS]
前のページへ 1|2|3|4       

MarkerStyleプロパティでマーカーを表示

 マーカーを表示するには、MarkerStyleプロパティを使用する。書式は下記の通りだ。マーカーとは折れ線グラフ上に表示する円や四角の目印のことだと思っていい。

MarkerStyleプロパティの書式

Seriesオブジェクト.MarkerStyle={表3の値}


 Seriesオブジェクトは、グラフの系列を表すオブジェクトだ。SeriesオブジェクトはSeriesCollectionコレクションのメンバーだ。SeriesCollectionコレクションとは、指定されたグラフまたはグラフ種類グループにある、全てのSeriesオブジェクトのコレクションを指す。

表3 MarkerStyleの値
メンバー 説明
xlMarkerStyleNone なし
xlMarkerStyleAutomatic 自動
xlMarkerStyleCircle 円形
xlMarkerStyleDiamond 菱形
xlMarkerStyleX X印付きの四角形
xlMarkerStyleStar アスタリスク(*)付きの四角形
xlMarkerStyleSquare 四角形
xlMarkerStyleTriangle 三角形
xlMarkerStyleDot 短い棒
xlMarkerStyleDash 長い棒
xlMarkerStylePlus プラス記号(+)付きの四角形
xlMarkerStylePicture 画像
参照「XlMarkerStyle 列挙型 (Microsoft.Office.Interop.Excel) - MSDN

 マーカーを表示させるマクロはリスト7になる。

Sub 折れ線グラフにマーカーを表示する()
:
:
※ここまでリスト6と同じ
:
:
  Dim i As Long
  Dim mySeriesCollection As SeriesCollection
  Set mySeriesCollection = ActiveSheet.ChartObjects(1).Chart.SeriesCollection
  For i = 1 To mySeriesCollection.Count
    mySeriesCollection.Item(i).MarkerStyle = xlMarkerStyleCircle
  Next
End Sub
リスト7 折れ線グラフにマーカーを表示

 SeriesCollection型の変数「mySeriesCollection」を宣言し、Setを使って追加された折れ線グラフのコレクションを代入しておく(8〜9行目)。Countプロパティで折れ線グラフの個数を取得し、その数だけ反復処理を行う(10〜12行目)。反復処理内で、折れ線グラフのマーカーに、「xlMarkerStyleCircle」と指定して、円形のマーカーを表示している(11行目)。

 実行すると、図8のように表示される。

図8 折れ線グラフにマーカーを表示した

Explosionプロパティで円グラフの一部を分離する

 最後に、円グラフを表示して、その一部を切り離してみよう。円グラフの一部を分離するには、Explosionプロパティを使用する。書式は下記の通りだ。

Explosionプロパティの書式

Seriesオブジェクト.Explosion={切り離す距離}


 {切り離す距離}は、半径に対する割合だ。「10」を指定すると半径に対する10%に当たる距離分、分離される。

 円グラフを作成して「英語」の科目だけ20%分離してみよう。マクロはリスト8になる。

Sub 円グラフを作成して英語の科目を分離する()
  Range("C3:D11").Select
  If ActiveSheet.ChartObjects.Count > 0 Then
    ActiveSheet.ChartObjects(1).Delete
  Else
    Dim graphTitle As String
    graphTitle = Range("B2").Value
    ActiveSheet.Shapes.AddChart
    ActiveSheet.ChartObjects(1).Chart.ChartType = xl3DPie
    ActiveSheet.ChartObjects(1).Activate
    ActiveChart.SeriesCollection(1).Points(5).Select
    Selection.Explosion = 20
  End If
End Sub
リスト8 円グラフを作成して「英語」の科目を分離

 円グラフなので、「1年」のデータだけ選択して表示させる(2行目)。ワークシート上に既にグラフが存在していれば削除する(3〜4行目)。

 グラフの種類(ChartType)には「xl3Dpie」を指定して3Dの円グラフを表示している(10行目)。3D円グラフをアクティブにして(11行目)、3D円グラフのPointsコレクションの引数に、系列のインデックス番号、ここでは「英語」の「5」を指定している(12行目)。Explosionプロパティには「20」を指定して、半径に対して「英語」のエリアを20%分離している(13行目)。

 要素はPointオブジェクトで表され、Pointオブジェクトの集合体はPointsコレクションになる。よって「Point(5)」と指定すると、円グラフの系列の5番目、すなわち「英語」を指すことになる。ちなみに、「国語」なら「Points(1)」、「数学」なら「Points(2)」という具合になる。

 「円グラフの作成」ボタンに、リスト8のコードを関連付けて実行すると、図9のように表示される。

図9 3D円グラフで「英語」を分離した

Excel 2016から新しく追加されたグラフ

 Excel 2016では、図10のような新しいグラフが追加されている。Excel 2016メニューの「挿入」→「おすすめグラフ」と選択して表示されるメニューから「全てのグラフ」を選択すると、図10の赤い四角で囲った新しいグラフが追加されている。

図10 Excel 2016から新しく追加されたグラフ

 各自がExcel上のデータを選択した状態から、いろいろグラフの表示を試してみてほしい。

次回は、「シートの操作」について

 今回の解説で、グラフを表に追加すると、がぜん見栄えが良くなることがお分かりいただけただろう。グラフの種類は無数にあるので、各自が表2や「Excel 2016から新しく追加されたグラフ」を参考に、ChartTypeにいろいろなグラフを指定して試していただきたい。

 次回は、「シートの操作」について解説する予定だ。「シート」とは何かを解説し、その参照方法やシートの移動、コピーなどのやり方を紹介する。

 Excelでは単に1枚のシートだけを使用することはほとんどない。複数のシートを作り、「1月の売上」「2月の売上」……「12月の売上」というようにシートごとに管理していくのが普通だ。そのため当然のことだが、「シートの操作」もマクロで処理する必要性が出てくる。

 「シートの操作」を覚えれば、Excel VBAの使い方に幅が増えること請け合いだ。頑張ってマスターしよう。

■更新履歴

【2016/8/26】Windows 10、Excel 2016に対応しました。


参考書籍

著者プロフィール

PROJECT KySS 薬師寺 国安(やくしじ くにやす)

1950年生まれ。フリーVBプログラマ。高級婦人服メーカーの事務職に在職中、趣味でVBやActiveXに取り組み、記事を執筆。2003年よりフリー。.NETやRIAに関する執筆多数。Windowsストアアプリも多数公開中(約270本)。

 

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)。

PROJECT KySSは、1997年に薬師寺聖と結成したコラボレーション・ユニット


前のページへ 1|2|3|4       

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

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

メールマガジン登録

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