こんにちは、masaです。
仕事でグラフの線の書式を一つずつ地道にちまちまと手動で変更するのがめんどくさくなって色々調べて、自動化できたので記録を残しておきます。
グラフの線の書式を一括で修正・統一するまでの工程は以下の通りです。
- グラフ上にある線の数(a)を取得する。
- 1からa番目までループするようにする。
- 線種を実線で、黒で、1ptで統一するように指定する。
結論:グラフの線の書式を一括で修正・統一するコードは、こんなコードです。
いきなり結論ですがこんなコードです。前提として「グラフを選択した状態」でこのマクロを起動させます。
Sub グラフ線統一化()
Dim a As Integer
Dim i As Integer
’グラフ上にある線の数を取得
a = ActiveChart.FullSeriesCollection.Count
’1~a番目ループする。
For i = 1 To a
ActiveChart.FullSeriesCollection(i).Select
With Selection.Format.Line
.Visible = msoTrue
’↓色を黒にする。
.ForeColor.ObjectThemeColor = msoThemeColorText1
.ForeColor.TintAndShade = 0
.ForeColor.Brightness = 0
.Transparency = 0
’↓1ptとする。
.Weight = 1
’↓実線にする。
.DashStyle = msoLineSolid
End With
Next i
End Sub
各工程の解説
①グラフ上にある線の数(i)を取得する。
’グラフ上にある線の数を取得
a = ActiveChart.FullSeriesCollection.Count
②1からa番目までループするようにする。
使う文字についてはどんな文字としてもOKですが、コードの最初に使う文字と種類を宣言します。
今回はaもiもInteger(整数)を用いました。他にはVariant(万能型)やSingle(少数)などがあります。
~中略~
Dim a As Integer
Dim i As Integer
~中略~
’1~a番目ループする。
For i = 1 To a
~中略~
Next i
③実線で、黒で、1ptで統一するように指定する。
線種、色、太さ、を指定できます。今回は、実線、黒、1ptとしています。
With Selection.Format.Line
.Visible = msoTrue
’↓色を黒にする。
.ForeColor.ObjectThemeColor = msoThemeColorText1
.ForeColor.TintAndShade = 0
.ForeColor.Brightness = 0
.Transparency = 0
’↓1ptとする。
.Weight = 1
’↓実線にする。
.DashStyle = msoLineSolid
End With
その他・一本の線だけ指定の書式にしたい場合のコード
上に書いたコードだとグラフ上の全ての線を勝手に同じ書式に統一されてしまうので、任意の一本の線だけ書式を変えるコードも書いています。使い方はグラフの中の線を選択した状態でマクロを起動させます。
中身は上に書いたコードを抜粋しているので解説は割愛します。
Sub グラフ線統一化一本専用()
With Selection.Format.Line
.Visible = msoTrue
.ForeColor.ObjectThemeColor = msoThemeColorText1
.ForeColor.TintAndShade = 0
.ForeColor.Brightness = 0
.Transparency = 0
.Weight = 1
.DashStyle = msoLineSolid
End With
End Sub