![見出し画像](https://assets.st-note.com/production/uploads/images/171204981/rectangle_large_type_2_117c9e34a0eb4f43ad2e6e1b11f208fb.jpeg?width=1200)
【Excel VBA】VBAでグラフを書いてみる Vol.02
この記事は以下記事の続きです。
昨日はグラフオブジェクトの追加までコーディングしました。
今日は、系列を追加して散布図を描くところまでを作成しました。
完成コード
メインコード
Option Explicit
Public Sub TestCode()
'データ選択
Dim TableRange As Range
With Sheet1.Range("A1").CurrentRegion
'テーブルヘッダーを範囲から外す
Set TableRange = .Resize(.Rows.Count - 1).Offset(1)
End With
'グラフオブジェクトの追加
Dim Cht As Chart
Set Cht = F_Create_GraphObject(Selection, "寸法変化")
'系列追加
Dim Series01 As Series
Set Series01 = Cht.SeriesCollection.NewSeries
Call S_Add_XYScatterMarkerLines(xRng:=TableRange.Columns(1), _
yRng:=TableRange.Columns(2), _
sName:="寸法(mm)", _
inSrs:=Series01)
End Sub
系列はSeriesオブジェクトとして管理できる。
系列を追加したいチャートオブジェクト(Cht)にSeriesCollection.NewSeriesと書くことで系列が追加される。
ユーザー関数で、X軸、Y軸のセル範囲を設定、系列名はsNameに文字列で設定、inSrsは変更したい系列(Seriesオブジェクト)を指定します。
S_Add_XYScatterMarkerLinesプロシージャ
'**
'* 散布図マーカータイプのグラフを作成するサブプロシージャ
'* 引数1:xRng {Range型} X軸のデータを指定
'* 引数2:yRng {Range型} Y軸のデータを指定
'* 引数3:sName {String型} データの系列名を指定
'* 引数4:inSrs {Series型} シリーズ名を指定
'**
Private Sub S_Add_XYScatterMarkerLines(ByVal xRng As Range, _
ByVal yRng As Range, _
ByVal sName As String, _
ByVal inSrs As Series)
'処理
With inSrs
.ChartType = xlXYScatterLines
.XValues = xRng
.Values = yRng
.Name = sName
End With
End Sub
このプロシージャを作る意味があるか?という気もしますがメインコードをすっきりさせる意味ではあった方がよさそうな気がしたのでこうしました。
![](https://assets.st-note.com/img/1737556345-AhP5Rwu704BQvFExszWYoOVZ.png?width=1200)
自分のメモ用みたいな記事で申し訳ないです。
とりあえずこのような感じでグラフを作成するためのコードに何が必要かを調べていきたいと思っています。