Excel

【エクセル-マクロ活用集】グラフのサイズをcmでそろえて整列する例文

Sub グラフ整列1() 
Dim sheetname
Dim gragh(3) 

sheetname = "グラフ整列" 
gragh(1) = "sin" 
gragh(2) = "cos" 
gragh(3) = "tan" 

nextProc: 

For i = 1 To 3 

 Worksheets(sheetname).ChartObjects(gragh(i)).Select  
 Worksheets(sheetname).ChartObjects(gragh(i)).Cut
 Worksheets(sheetname).Cells(10, (5 * i)).Select '★' 
 Worksheets(sheetname).Paste 

Next
 
End Sub

皆さんはバラバラなグラフを整列したり、サイズを統一したい時どうしていますか。

数が少なければ一つ一つ処理していけば良いですが、位置の均等割り付けや

グラフの書式設定でサイズを揃えたりしていると意外に時間がかかるものです。

そこで、本記事ではマクロ初心者向けにワンボタンですべてのグラフを整列、サイズを変更、

さらには色や書式も同時に変更するサンプル例を紹介します。

グラフ整列

写真のようにバラバラの位置にあるグラフを「ここへ移動」という位置に動かすマクロです。

★の数式を変えれば好きな位置・間隔で整列させることができます。

※シートの名前やグラフの名前はご自身で設定して使ってください。

グラフ整列

 

こちらの写真が整列後のグラフです。

グラフ整列

グラフのサイズ変更とグラフ整列

次にサイズの変更と整列を同時に行うマクロを紹介します。

★の部分を指定したいcmの数値に変えることで、

グラフのサイズを自由自在に変更することができます。

Sub サイズ変更とグラフ整列() 
Dim sheetname 
Dim gragh(3) 
sheetname = "グラフ整列" 

gragh(1) = "sin" 
gragh(2) = "cos" 
gragh(3) = "tan" 
pix = 0.353 / 10 

nextProc: 

For i = 1 To 3 

 Worksheets(sheetname).ChartObjects(gragh(i)).Height = 7 / pix '★'  
 Worksheets(sheetname).ChartObjects(gragh(i)).Width = 10 / pix '★' 
 Worksheets(sheetname).ChartObjects(gragh(i)).Select 
 Worksheets(sheetname).ChartObjects(gragh(i)).Cut 
 Worksheets(sheetname).Cells(10, (5 * i)).Select 
 Worksheets(sheetname).Paste 

Next 

End Sub

写真のようにグラフのサイズ(7cm×10cm)と位置が綺麗にそろいます。

グラフのサイズ変更とグラフ整列

グラフのサイズ・色・書式変更と整列

さらにマーカーの色やマーカーの種類も変更できます。

PRGB や PShape を好みのものに変えて使ってみてください。

Sub 色や書式とサイズ変更() 
Dim sheetname 
Dim gragh(3) 
Dim PRGB(3) As Variant 
Dim PShape(3) As Variant 

sheetname = "グラフ整列" 
gragh(1) = "sin" 
gragh(2) = "cos" 
gragh(3) = "tan" 

pix = 0.353 / 10 

PRGB(1) = RGB(0, 113, 188) 
PRGB(2) = RGB(51, 153, 51) 
PRGB(3) = RGB(224, 50, 83) 

PShape(1) = xlCircle 
PShape(2) = xlTriangle 
PShape(3) = xlCross 

nextProc: 

For i = 1 To 3 

 Worksheets(sheetname).ChartObjects(gragh(i)).Height = 7 / pix  
 Worksheets(sheetname).ChartObjects(gragh(i)).Width = 10 / pix 
 Worksheets(sheetname).ChartObjects(gragh(i)).Select 

 With ActiveChart.SeriesCollection(1)
  .MarkerStyle = PShape(i)
  .MarkerSize = 7
  .Format.Line.Weight = 2
  .MarkerBackgroundColorIndex = xlColorNone
  .MarkerForegroundColor = PRGB(i)
  .Border.LineStyle = xlNone 
 End With 

Next 

End Sub

グラフのサイズ・色・書式変更と整列

グラフの書式を色々と設定する(作者の好きなテンプレ)

最後に自分が愛用するグラフのテンプレを紹介します。

マーカーの枠の色を白色にすることで少しだけおしゃれになります。

ぜひ試してみてください。

Sub グラフ整列初期設定() 
Dim sheetname 
Dim gragh(3) 
Dim PRGB(5) As Variant 
Dim PShape(4) As Variant 

sheetname = "グラフ整列" 

gragh(1) = "sin" 
gragh(2) = "cos" 
gragh(3) = "tan" 

pix = 0.353 / 10 

PRGB(1) = RGB(0, 113, 188) 
PRGB(2) = RGB(51, 153, 51) 
PRGB(3) = RGB(224, 50, 83) 
PRGB(4) = RGB(0, 0, 255) 
PRGB(5) = RGB(255, 255, 255) 

PShape(1) = xlCircle 
PShape(2) = xlTriangle 
PShape(3) = xlCross 
PShape(4) = xlDiamond
 
nextProc: 

For i = 1 To 3 

Worksheets(sheetname).ChartObjects(gragh(i)).Height = 7 / pix Worksheets(sheetname).ChartObjects(gragh(i)).Width = 10 / pix Worksheets(sheetname).ChartObjects(gragh(i)).Select 

With ActiveChart.SeriesCollection(1) 
 .MarkerStyle = PShape(1) 
 .MarkerSize = 6 
 .MarkerBackgroundColor = PRGB(5) 
 .Format.Line.Weight = 0.1 
 .Format.Line.Visible = msoTrue 
 .Format.Line.ForeColor.RGB = PRGB(4) 
 .Format.Line.Weight = 0.1 
 .Format.Line.DashStyle = msoLineSolid 
 .Format.Fill.ForeColor.RGB = PRGB(4) 
 .MarkerForegroundColor = PRGB(5) 
End With 

Next 

End Sub

グラフの書式を色々と設定する(作者の好きなテンプレ)

グラフの設定はこの他にも軸の設定や2軸目の追加など

色々やれることがあります。

エクセルマクロについて勉強したい方向けに

買ってよかったおすすめの本も紹介しています。

ぜひ読んでいってください。

【Excelで作業の自動化!マクロ・VBAを始める方へ】例文が豊富でオススメな本ランキング Excel マクロ・VBA に関する本で私がお勧めする3冊を紹介します。 初心者でもすぐに使え、上級者にも例題集として1...
ABOUT ME
Mickey@コーヒー好きエンジニア
【製造業×プログラミング×AI】Python/VBAを活用した業務改善、Streamlit/Plotlyを活用したWebアプリ開発について初心者向けに発信中|趣味は自家焙煎コーヒー作り|noteでは焙煎理論を発信|ココナラではプログラミングに関する相談,就職/転職やコーヒーに関する相談などのサービスをやっています
【製造×プログラミング×AI】
Mickey@コーヒー好きエンジニア
【製造業×プログラミング×AI】ロボット×画像処理×AI×3現主義が得意な生産技術者|Python/VBAを活用した業務改善、Streamlit/Plotly/PySimpleGUIなどを活用したアプリ開発について初心者向けに発信中|趣味は自家焙煎コーヒー作り|noteでは焙煎理論を発信|ココナラではPython/iOS/VBA開発の支援,就職/転職相談などのサービスもやっています↓ Pythonを使ったWebアプリ開発を支援します 成果物が明確なのでPythonを学びたい人にオススメです
\ Follow me /