既存シートにグラフを作成する(マニュアル編)
Excelマクロを使わず、マニュアルでグラフを作成する方法ですが、(1)既存シートに作成するか、(2)新しいシートに作成するかの2パターンあります。
まず既存シートにグラフを作成する方法をご紹介します。
手順としては、① データ領域を選択、② メニューバーの[挿入] - [折れ線] - (今回は)[マーカー付き折れ線]を選択します。
すると、下記グラフが同じシート内に表示されます。
新しいシートにグラフを作成する(マニュアル編)
次に、新しいシートにグラフを作成する方法ですが、既存シートにグラフを作成した後、メニューバーの[デザイン] - [グラフの移動]を選択します。
下記「グラフの移動」というポップアップ画面が表示されるので、[新しいシート]を選択し[OK]をクリックします。
すると、下記グラフが新しいシートに全面表示されます。
既存シートにグラフを作成する(マクロ編)
グラフの作成は、「ActiveSheet.Shapes.AddChart」を用います。
データ領域の指定は、「.Chart.SetSourceData Source:=」で指定し、グラフの種類は「.Chart.ChartType =」で指定します。
With ActiveSheet.Shapes.AddChart.Chart
.SetSourceData Source:=ActiveSheet.Range(Cells(1, 1), Cells(5, 5))
.ChartType = xlLineMarkers
End With
.SetSourceData Source:=ActiveSheet.Range(Cells(1, 1), Cells(5, 5))
.ChartType = xlLineMarkers
End With
新しいシートにグラフを作成する(マクロ編)
一方、新しいシートにグラフを作成する場合は、「ActiveWorkbook.Charts.Add」を用います。
データ領域の指定は、「.SetSourceData Source:=」で指定し、グラフの種類は「ActiveWorkbook.ActiveChart.ChartType =」で指定します。
ActiveWorkbook.Charts.Add.SetSourceData Source:=ActiveSheet.Range(Cells(1, 1), Cells(5, 5))
ActiveWorkbook.ActiveChart.ChartType = xlLineMarkers
ActiveWorkbook.ActiveChart.ChartType = xlLineMarkers
【例】グラフを作成するには
新しいExcelを開き、下記の様な表を作成してから、新しいシートにグラフを作成する処理をご紹介します。
↓
Excelマクロで、表の作成(罫線処理は除外)からグラフまで作成する処理をコーディングすると、下記のようになります。
'Excel新規ブックを起動
Dim AppExcel As Excel.Application
Dim AppSheetName As String
Dim LineX, LineY, i, j As Integer
Set AppExcel = New Excel.Application
'ブックを新規追加
AppExcel.Workbooks.Add
'シート名の取得
AppSheetName = AppExcel.ActiveSheet.Name
LineX = 5
LineY = 5
'セルは(1, 1)開始のため、(i, j)の開始を(1, 1)とする
For i = 1 To LineX
For j = 1 To LineY
'1行目:年月
If i = 1 Then
Select Case j
Case 2:
AppExcel.Cells(i, j) = "'2017/04"
Case 3:
AppExcel.Cells(i, j) = "'2017/05"
Case 4:
AppExcel.Cells(i, j) = "'2017/06"
Case 5:
AppExcel.Cells(i, j) = "'2017/07"
End Select
'1列目:くだもの
ElseIf j = 1 Then
Select Case i
Case 2:
AppExcel.Cells(i, j) = "リンゴ"
Case 3:
AppExcel.Cells(i, j) = "みかん"
Case 4:
AppExcel.Cells(i, j) = "バナナ"
Case 5:
AppExcel.Cells(i, j) = "ぶどう"
End Select
'1行目・1列目以外:行数 + 列数
Else
AppExcel.Cells(i, j) = i + j
End If
Next j
Next i
'グラフの作成
AppExcel.Charts.Add.SetSourceData _
Source:=AppExcel.Sheets(AppSheetName).Range(AppExcel.Cells(1, 1), AppExcel.Cells(LineX, LineY))
'グラフのインデックスを取得
ChartIndex = AppExcel.ActiveChart.Index
'グラフの各種設定をする
With AppExcel.Charts(ChartIndex)
'折れ線グラフ
.ChartType = xlLineMarkers
'凡例を上に配置
.SetElement (msoElementLegendTop)
'タイトルを表示
.HasTitle = True
'タイトルを設定
.ChartTitle.Text = "くだもの"
End With
Dim AppExcel As Excel.Application
Dim AppSheetName As String
Dim LineX, LineY, i, j As Integer
Set AppExcel = New Excel.Application
'ブックを新規追加
AppExcel.Workbooks.Add
'シート名の取得
AppSheetName = AppExcel.ActiveSheet.Name
LineX = 5
LineY = 5
'セルは(1, 1)開始のため、(i, j)の開始を(1, 1)とする
For i = 1 To LineX
For j = 1 To LineY
'1行目:年月
If i = 1 Then
Select Case j
Case 2:
AppExcel.Cells(i, j) = "'2017/04"
Case 3:
AppExcel.Cells(i, j) = "'2017/05"
Case 4:
AppExcel.Cells(i, j) = "'2017/06"
Case 5:
AppExcel.Cells(i, j) = "'2017/07"
End Select
'1列目:くだもの
ElseIf j = 1 Then
Select Case i
Case 2:
AppExcel.Cells(i, j) = "リンゴ"
Case 3:
AppExcel.Cells(i, j) = "みかん"
Case 4:
AppExcel.Cells(i, j) = "バナナ"
Case 5:
AppExcel.Cells(i, j) = "ぶどう"
End Select
'1行目・1列目以外:行数 + 列数
Else
AppExcel.Cells(i, j) = i + j
End If
Next j
Next i
'グラフの作成
AppExcel.Charts.Add.SetSourceData _
Source:=AppExcel.Sheets(AppSheetName).Range(AppExcel.Cells(1, 1), AppExcel.Cells(LineX, LineY))
'グラフのインデックスを取得
ChartIndex = AppExcel.ActiveChart.Index
'グラフの各種設定をする
With AppExcel.Charts(ChartIndex)
'折れ線グラフ
.ChartType = xlLineMarkers
'凡例を上に配置
.SetElement (msoElementLegendTop)
'タイトルを表示
.HasTitle = True
'タイトルを設定
.ChartTitle.Text = "くだもの"
End With
グラフの作成処理は「グラフの作成」とコメントしてある処理からで、カーソルがデータソース上にあれば「.SetSourceData」以下の設定を省略してもグラフを作成する事ができます。
その後、グラフを操作する場合、ActiveChartと定義するよりインデックスを取得して、そのインデックスを基に操作をする方が誤りがありません。