EXCEL VBA グラフシートにグラフを作成する方法(Charts.Add : SetSourceData) データ範囲を指定してグラフの作成
EXCEL VBA グラフシートにグラフを作成する方法(Charts.Add : SetSourceData) データ範囲を指定してグラフの作成
●はじめに
EXCELで一覧表などを作成して、それをグラフ化すると数値では表現しづらい事でも、ビジュアル的に表現する事ができます。グラフで表現する事で見た目でデータの大小や乖離などが伝わりやすくなります。EXCELでグラフを表現するには、通常使うシートに作成する方法とグラフシートに作成する方法の2パターンがあります。今回は、グラフシートでのグラフを作成する方法を説明いたします。
●書式の説明 【Charts.Add(Before,After)】
【オブジェクト.SetSourceData(Source,PlotBy)】
【オブジェクト.SetSourceData(Source,PlotBy)】
【Charts.Add(Before,After)】
例: Charts.Add before:=Worksheets(“Sheet1”)
※ ワークシート(Sheet1)の横にグラフシートを作成します。【オブジェクト.SetSourceData(Source,PlotBy)】
※ Source ⇒ データ範囲を指定 (グラフ化データの指定)
例: ActiveChart.SetSourceData Source:=Worksheets(“sheet1”).Range(“A1:D4”), PlotBy:=xlRows
例: Charts.Add before:=Worksheets(“Sheet1”)
※ ワークシート(Sheet1)の横にグラフシートを作成します。【オブジェクト.SetSourceData(Source,PlotBy)】
※ Source ⇒ データ範囲を指定 (グラフ化データの指定)
引数:PlotBy (データ系列の方向指定) |
|
---|---|
データ系列を縦方向 | xlRows |
データ系列を横方向 | xlColumns |
グラフシートにグラフを作成する方法
●プログラム説明 (サンプル①)
1 2 3 4 5 6 7 |
Sub Grafh_sheet01() Charts.Add before:=Worksheets("Sheet1") 'グラフシートを作成します。 ActiveChart.SetSourceData Source:=Worksheets("sheet1").Range("A1:D4"), PlotBy:=xlRows 'ワークシート「sheet1」のA1:D4からデータ系列縦のデータでグラフを作成します。 End Sub |
●実行前~実行後 ※プログラム実行後、Sheet1のデータを元にグラフシートにグラフが作成されました。
(画面クリックして拡大)
(画面クリックして拡大)
グラフシートにグラフを作成する方法(既にグラフあれば作成しない)
●プログラム説明 (サンプル②)
下記のサンプルプログラムは、グラフが作成を作成するプログラムなのですが、グラフシート(グラフ)が既に作成されている場合は、”既にグラフが作成されています。”とメッセージが表示されプログラムが終了します。グラフシートが作成されていない場合は、シート(月別売上)の表データを元に、グラフを作成します。
1 2 3 4 5 6 7 8 9 10 11 12 |
Sub Grafh_sheet02() If Charts.Count = 0 Then 'グラフシートがあるか確認するする With Charts.Add(After:=Sheets("月別売上")) 'グラフシートを作成します。 .Name = Worksheets("月別売上").Range("A1") 'シート名をA1を指定します。「月別売上合計表」 .SetSourceData Source:=Worksheets("月別売上").Range("A5").CurrentRegion, PlotBy:=xlColumns 'グラフを作成します。 End With Else MsgBox "既にグラフが作成されています。" End If End Sub |
●実行前~実行後 ※プログラム実行後、1回目の実行は、グラフシート(グラフ)が無いので、グラフシートが作成されグラフを作成されました。2回目の実行は、グラフが作成されているので、「既にグラフが作成されています。」のメッセージが表示されました。
(画面クリックして拡大)
(画面クリックして拡大)
グラフシートにグラフを作成する方法(データ系列の選択)
●プログラム説明 (サンプル③)
下記のサンプルプログラムは、グラフが作成を作成するプログラムなのですが、一度作成したグラフに対してデータ系列を選択できるサンプルプログラムです。グラフ作成後でもデータ系列を縦方向・横方向に変更できるので、作成されたグラフを確認しつつ変更する事ができるサンプルプログラムです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
Sub Grafh_sheet03() Dim Sen As Integer Dim SPotBy As Variant Sen = Application.InputBox(Prompt:="データ系列の方向を指定します。縦:1・横:2", Title:="グラフシート", Default:="1", Left:=100, Top:=200, Type:=2) 'InputBoxメゾット設定します。 'データ系列の方向を指定します。 If Sen = 1 Then SPotBy = xlRows 'データ系列を縦方向 Else SPotBy = xlColumns 'データ系列を横方向 End If If Charts.Count = 0 Then 'グラフシートがあるか確認するする 0:はグラフシート無し With Charts.Add(After:=Sheets("年度売上")) 'グラシートが作成いないので、グラフを作成します。 .Name = "年度売上グラフ" .SetSourceData Source:=Worksheets("年度売上").Range("A1").CurrentRegion, PlotBy:=SPotBy End With Else '既にグラフが作成されている場合は、データ系列の変更を行います。 Charts("年度売上グラフ").SetSourceData Source:=Worksheets("年度売上").Range("A1").CurrentRegion, PlotBy:=SPotBy End If End Sub |
●実行前~実行後 ※プログラム実行後、データ系列を指定するInputBoxが表示されますので、データ系列(縦)・(横)を入力します。入力後に指定したデータ系列でグラフが作成されます。2度目以降の実行では、グラウは作成されていまので、データ系列が変更されていれば、そのデータ系列に応じてグラフが修正されます。
(画面クリックして拡大)
(画面クリックして拡大)
グラフシートの削除方法(グラフシートを全て削除)
●プログラム説明 (サンプル④)
下記のサンプルプログラムは、作成したグラフシートを削除するプログラムです。削除条件として、1以上のグラフシートが有る場合は、全てのグラフシートを削除します。
1 2 3 4 5 6 7 8 9 10 11 |
Sub Grafh_sheet04() 'グラフシートの削除 Application.DisplayAlerts = False 'グラフシートを削除する際に確認メッセージを無効 If Charts.Count >= 1 Then 'グラフシートが1以上ある場合は削除 Charts.Delete 'グラフシートを削除します。 End If Application.DisplayAlerts = True '確認メッセージを有効化にする End Sub |
●実行前~実行後 ※プログラム実行後、グラフシート「年度売上グラフ」が削除され、「年度売上」のシートのみ残りました。
(画面クリックして拡大)
(画面クリックして拡大)
最後まで、ご覧いただきまして誠に有難うございました。
また、VBAに関するテクニックや便利な手法などをこのサイトに掲載していきますので、定期的に参照していただけると幸いです。
また、VBAに関するテクニックや便利な手法などをこのサイトに掲載していきますので、定期的に参照していただけると幸いです。