このページでは、以下のようにシート上にちらかっているグラフを
こんな感じで一発整列させる方法をご紹介していきます。
上の画像では4列に整列させていますが、指定列数を変更すればどんな並べ方も実行可能です。
〇このページの処理でできること
①グラフサイズの統一
②グラフとグラフの間隔指定(縦、横)
③グラフの整列(上述の通り)
基本的にはコードをコピーして実行するだけです。
あなたのやりたいことと一致していれば是非続きをご覧ください。
コード上の指定変数の説明
まずは以降で紹介するサンプルコード内に出てくるいくつかの変数が何を指定しているものなのかを簡単に解説しておきます。
出てくる変数は以下の5つです。
chart_width :1つのグラフの横幅
chart_height :1つのグラフの高さ
margin1 :グラフとグラフの間隔(横方向)
margin2 :グラフとグラフの間隔(縦方向)
chart_col :整列させる際の列数
図で表すと以下の通りですね。
複数グラフを列数指定で整列させるサンプルコード
変数の意味がわかったところで、実際のコーディングに入っていきましょう。
以下が冒頭に紹介した作業を実施してくれるサンプルコードです。
※3~7行目の各変数はあなたの状況に応じて適宜変更してください。
Sub chart_post_adjust3()
Dim i As Integer
Dim chart_width As Integer, chart_height As Integer
chart_width = 300
chart_height = 200
margin1 = 10
margin2 = 10
chart_col = 3
chart_row = ActiveSheet.ChartObjects.Count \ chart_col
For i = 1 To ActiveSheet.ChartObjects.Count
row_num = (i - 1) \ chart_col
col_num = (i - 1) Mod chart_col
With ActiveSheet.ChartObjects(i)
.Width = chart_width
.Height = chart_height
.Left = col_num * (chart_width + margin1)
.Top = row_num * (chart_height + margin2)
End With
Next
End Sub
サンプルコードの実行結果
それでは先ほどのサンプルコードを実行してみましょう。
まずはchart_col = 4で実行してみます。
横4列で問題なく整列していますね。
つぎはchart_col = 3で実行してみます。
横3列で整列し、最後の行はもうグラフがないので2列になっていますね。
最後はchart_col = 5です。
こちらも問題なしですね。
グラフサイズ、間隔も変更しながら実行してみてください。
いい感じに整列できるはずです。
おわりに
というわけで今回は、エクセルVBAをシート上に散らかっている複数のグラフを一括整列させる方法をご紹介しました。
シートの整理の際にぜひご活用ください。
このように、私のブログではエクセルスキルはもちろん、様々なプログラミングスキルを紹介しています。
今は仕事中で時間がないかもしれませんが、ぜひ通勤時間中などに他の記事も読んでいただけると嬉しいです。
⇒興味をもった方は【ヒガサラ】で検索してみてください。
確実にスキルアップできるはずです。
最後に、この記事が役に立ったという方は、ぜひ応援よろしくお願いします。
↓ 応援ボタン
それではまた!
コメント
役に立つvbaありがとうございます。
上記のvbaに開始位置(現在グラフがA1から貼り付けされていること)についてですが、
少しずらして貼り付けを行いたいです。
(A5から上記のvbaでグラフが並ぶように…)
アドバイス、よろしくお願いします。
ご質問ありがとうございます。(^^)
おそらく
.Top = row_num * (chart_height + margin2)の部分を
.Top = row_num * (chart_height + margin2) + Range(“A5”).top
に変更すればできるのではないかと思います。
試してはいないので、結果を教えていただけると嬉しいです。
よろしくお願いします。
返信ありがとうございました。
+~をつけることにより、思っていた通りに動かすことができました♪
本当にありがとうございます(^▽^)/