Sub TEST1()
Dim A0, A1, A2
Dim Kei, X
'配列を作成
X = Array("いちご", "キウイ", "バナナ")
Kei = Array("大阪", "東京", "名古屋")
A0 = Array(1000, 400, 200) '大阪
A1 = Array(300, 100, 1000) '東京
A2 = Array(2000, 800, 300) '名古屋'グラフ挿入
ActiveSheet.Shapes.AddChart2.Select
ActiveChart.ChartType = xlColumnClustered '集合縦棒'「1つ目」の系列を追加
With ActiveChart.SeriesCollection.NewSeries
.XValues = X '= Array("いちご", "キウイ", "バナナ")
.Name = Kei(0) '「大阪」
.Values = A0 '= Array(1000, 400, 200)
End With
'「2つ目」の系列を追加
With ActiveChart.SeriesCollection.NewSeries
.Name = Kei(1) '「東京」
.Values = A1 '= Array(300, 100, 1000)
End With
'「3つ目」の系列を追加
With ActiveChart.SeriesCollection.NewSeries
.Name = Kei(2) '「名古屋」
.Values = A2 '= Array(2000, 800, 300)
End With
ActiveChart.HasLegend = True '凡例を表示
ActiveChart.Legend.Position = xlLegendPositionBottom '下に設置
ActiveChart.HasTitle = True 'タイトルを表示
ActiveChart.ChartTitle.Text = "売上"
End Sub
では、VBAコードを実行してみます。
配列からグラフを作成できた
VBAで配列からグラフを作成できました。
1つずつ手順を追って、VBAコードの実行結果をみてみましょう。
配列を作成
最初に、配列を作成しておきます。
配列からグラフを作成したい場合を考えているので、既に配列は作成されているかと思います。
配列のデータがある場合は、「グラフ用」の配列に組み直す感じですね。
Sub TEST2()
Dim A0, A1, A2
Dim Kei, X
'配列を作成
X = Array("いちご", "キウイ", "バナナ")
Kei = Array("大阪", "東京", "名古屋")
A0 = Array(1000, 400, 200) '大阪
A1 = Array(300, 100, 1000) '東京
A2 = Array(2000, 800, 300) '名古屋
End Sub
とういう感じで、「X軸のラベル」、「系列の名前」、「系列のデータ」用の配列を作成しています。
グラフを挿入
グラフを挿入して、グラフの種類を設定します。
「.AddChart2」でグラフを挿入です。
グラフの種類は、「.ChartType」で設定します。
Sub TEST3()
'グラフ挿入
ActiveSheet.Shapes.AddChart2.Select
ActiveChart.ChartType = xlColumnClustered '集合縦棒
End Sub
では、VBAコードを実行してみます。
グラフが挿入される
VBAでグラフが挿入されました。
1つ目の系列を追加
系列を追加していきます。
まずは、1つ目の系列を追加です。
「横軸ラベル」は、「.XValues」に配列を入力します。
系列の「名前」は、「.Name」に入力です。
系列の「値」は、「.Values」に入力します。
Sub TEST4()
'「1つ目」の系列を追加
With ActiveChart.SeriesCollection.NewSeries
.XValues = X '= Array("いちご", "キウイ", "バナナ")
.Name = Kei(0) '「大阪」
.Values = A0 '= Array(1000, 400, 200)
End With
End Sub
では、VBAコードを実行してみます。
1つ目の系列が追加される
VBAで1つ目の系列が追加されました。
系列の「XValues」「Name」「Values」の箇所は、こんな感じです。
系列の「XValues」「Name」「Values」の箇所
「X軸のラベル」の「XValues」は、最初だけ設定します。
2系列目以降は、「Name」「Values」を追加していきます。
2つ目の系列を追加
2つ目の系列を追加します。
系列の「名前」の設定で「.Name」と、系列の「値」の「.Values」を設定します。
Sub TEST5()
'「2つ目」の系列を追加
With ActiveChart.SeriesCollection.NewSeries
.Name = Kei(1) '「東京」
.Values = A1 '= Array(300, 100, 1000)
End With
End Sub
では、VBAコードを実行します。
2つ目の系列が追加される
VBAで2つ目の系列が追加されました。
3つ目の系列を追加
3つ目の系列を追加します。
先ほどとの2つ目の系列と同じです。
系列の「名前」の設定で「.Name」と、系列の「値」の「.Values」を設定します。
Sub TEST6()
'「3つ目」の系列を追加
With ActiveChart.SeriesCollection.NewSeries
.Name = Kei(2) '「名古屋」
.Values = A2 '= Array(2000, 800, 300)
End With
End Sub
Sub TEST10()
Dim A0, A1, A2
Dim Kei, X
'配列を作成
X = Array("いちご", "キウイ", "バナナ")
Kei = Array("大阪", "東京", "名古屋")
A0 = Array(1000, 400, 200) '大阪
A1 = Array(300, 100, 1000) '東京
A2 = Array(2000, 800, 300) '名古屋
End Sub
「X軸のデータ」、「系列の名前」、「系列のデータ」の配列を作成しています。
配列をセルに入力
配列をセルに入力していきます。
Sub TEST11()
'配列をセルに格納
ActiveSheet.Range("B1").Resize(, UBound(X) + 1) = X 'X軸のデータ
ActiveSheet.Range("A2").Resize(UBound(A0) + 1) = WorksheetFunction.Transpose(Kei) '系列の名前
ActiveSheet.Range("B2").Resize(, UBound(A0) + 1) = A0 '1つ目の系列のデータ
ActiveSheet.Range("B3").Resize(, UBound(A1) + 1) = A1 '2つ目の系列のデータ
ActiveSheet.Range("B4").Resize(, UBound(A2) + 1) = A2 '3つ目の系列のデータ
End Sub
一つずつ、VBAコードを実行していきます。
「X軸のデータ」が入力される
VBAで「X軸のデータ」が入力されました。
「系列の名前」が入力される
VBAで「系列の名前」が入力されました。
「1つ目の系列」が入力される
VBAで「1つ目の系列」が入力されました。
「2つ目の系列」が入力される
VBAで「2つ目の系列」が入力されました。
「3つ目の系列」が入力される
VBAで「3つ目の系列」が入力されました。
配列を、セルに入力できました。
グラフを挿入
次に、グラフを挿入します。
「.AddChart2」を使って、グラフを挿入します。
グラフの種類は、「.ChartType」で設定します。
Sub TEST12()
'グラフを作成
ActiveSheet.Range("A1").Select 'データを選択
ActiveSheet.Shapes.AddChart2.Select 'グラフを挿入
ActiveChart.ChartType = xlColumnClustered '集合縦棒グラフに変更
End Sub