エクセル仕事を面倒に感じるときの一つにグラフ作成の仕事があります。
実際、以下のように感じる人は少なくないはずです。
・エクセルでグラフを一つ一つ作成するのってなんだか非効率
・文字の大きさ、x軸y軸のテキスト、最大値や最小値を一つずつ修正するのは面倒
・VBAでプログラミングを覚えて、グラフ作成を自動化したい!
・グラフを自動作成して、仕事をラクに終わらせたい!
そこで、この記事ではエクセルマクロVBAを使って折れ線グラフを自動作成する方法を紹介します。
複数のグラフを連続で自動作成する方法をプログラムコードに解説を入れながらお伝えしていきます。
目次
- 1 エクセルマクロVBAでグラフを自動作成する事例|折れ線グラフを連続作成
- 2 グラフを自動作成するマクロVBAのメリットやデメリット
- 3 「グラフを自動作成する」マクロの難易度は?
- 4 エクセルマクロVBAで折れ線グラフを連続自動作成するプログラム
- 5 折れ線グラフを連続で作成するマクロ|範囲選択、タイトル、軸ラベル、色の変更まで
- 5.1 ステップ0|開始のおまじない
- 5.2 ステップ1|変数定義
- 5.3 ステップ2|変数に情報を入れ込む
- 5.4 ステップ3|for next構文でライン1~ライン10まで一つずつ処理する
- 5.5 ステップ4|シートを追加する
- 5.6 ステップ5|規格値上限、下限を入れ込む
- 5.7 ステップ6|追加したシートに値を入力する
- 5.8 ステップ7|折れ線グラフを作成してデータ範囲を選択する
- 5.9 ステップ8|折れ線グラフの要素数(折れ線数)を読み込む
- 5.10 ステップ9|折れ線グラフの要素数に応じて、折れ線の色を変更する
- 5.11 ステップ10|折れ線グラフの位置やサイズを変更する
- 5.12 ステップ11|折れ線グラフの説明を変更
- 5.13 ステップ12|折れ線グラフのタイトル、x軸、y軸の情報を入力
- 5.14 ステップ13|折れ線グラフタイトルのテキスト、大きさを変更
- 5.15 ステップ14|折れ線グラフのx軸のテキスト、大きさを変更
- 5.16 ステップ15|折れ線グラフのy軸のテキスト、大きさを変更
- 5.17 ステップ16|ws2の設定を解放
- 5.18 ステップ17|ws1をエクセルの最前面にもってくる
- 6 エクセルマクロVBAの始め方・使い方
- 7 エクセルを自分用に編集アレンジして使いたいなら、エクセルマクロの無料動画で学ぼう
エクセルマクロVBAでグラフを自動作成する事例|折れ線グラフを連続作成
グラフを自動作成するエクセルマクロVBAについてイメージをつかんでもらうために、動画の事例を紹介します。
まずは上記の動画を見て、これから解説するマクロについて全体像をつかんでください。
グラフを自動作成するマクロVBAのメリットやデメリット
エクセルマクロVBAでグラフを自動作成するとき、さまざまなメリットがあります。同時にデメリットもあります。
それは以下です。
[1] プログラム作成には難しい設定は要らない
[2] 定型のコピペ作業であれば、グラフ作成作業の効率化が期待できる
[3] 文字の大きさ、x軸y軸のテキスト、最大値や最小値の修正が不要になる
●デメリット
[1] 初心者には見慣れないコードが多い
[2] グラフ作成マクロはウェブ上にあまり事例が出回っていない
[3] 書籍でもわかりやすい情報は少ない
以下で詳しく説明していきます。
グラフを自動作成するエクセルマクロVBAのメリット
まず、メリットから紹介します。
[1] プログラム作成には難しい設定は要らない
[2] 定型のコピペ作業であれば、グラフ作成作業の効率化が期待できる
[3] 文字の大きさ、x軸y軸のテキスト、最大値や最小値の修正が不要になる
[1] エクセルマクロのプログラムはシンプルに作成できる
グラフ作成のマクロはエクセルマクロに何か追加の設定は不要です。
エクセルさえインストールされていれば、新しくプログラムの開発環境を作る必要がありません。もちろん無料です。
[2] 定型のコピペ作業であれば、グラフ作成作業の効率化が期待できる
マクロで自動化したいグラフ作成の作業が定型であれば、グラフ作成の負担をガクンと減らせます。
手入力でグラフを作成する場合、グラフ作成の時間は、「作成グラフ数×1個あたり作成時間」です。
作成グラフ数が10個で、1個あたり作成時間が3分であれば、30分かかることになります。
しかし、マクロを使って自動化すればボタン一つで作業が終わります。グラフ10個でもグラフ100個でも、基本的に作業時間は同じです。
もちろん、グラフ作成数が多いとマクロが動く時間は長くなります。
ただボタン一つで処理が終わるため、グラフ100個作成したとしてもボタン一つで作業そのものは終わりです。
[3] 文字の大きさ、x軸y軸のテキスト、最大値や最小値の修正が不要になる
グラフ作成で厄介なことの一つに、細かな修正があります。
例えば、文字の大きさ、x軸y軸のテキスト、最大値や最小値の修正です。
しかしマクロで設定してしまえば、ボタン一発で、同じ文字の大きさでx軸y軸のテキストが入って最大値や最小値も入力された状態で作成されます。
つまり、作成したグラフの確認やタイプミスを減らせるのです。
さらに、動画で紹介しているようなグラフ作成の自動化を行えば、仕事を仕組み化できます。結果的に、人に仕事を渡すのが容易になります。
グラフを自動作成するエクセルマクロVBAのメリット
上記ではメリットを紹介しましたが、当然デメリットもあります。
[1] 初心者には見慣れないコードが多い
[2] グラフ作成マクロはウェブ上にあまり事例が出回っていない
[3] 書籍でもわかりやすい情報は少ない
[1] 初心者には見慣れないコードが多い
VBAでグラフ作成を行うとき、コード編集に難しさを感じる場合があります。なぜなら、グラフ作成特有のプログラムが数多く出てくるからです。
例えばグラフの線やグラフの種類を変更する場合、見慣れないコードが数多く登場します。
そのため、エクセルのセル文字列やシート間の転記をしかやってこなかった人は戸惑ってしまうかもしれません。特に、初心者は「知らないプログラムばかり…」と混乱しがちです。
その結果、慣れないプログラムを理解できず途中で挫折してしまうことがあります。
[2] グラフ作成マクロはウェブ上にあまり事例が出回っていない
グラフ作成のマクロは、ウェブサイトで提供される情報を見かけることがあります。
しかし、断片的で辞書的な説明しかされていないものが多いです。事例ベースの情報が少ないため、最初に参考すべき軸となるコードがあまり出回っていないのです。
そのため、マクロでグラフ作成を行いたいなら、自分で情報収集する必要があります。
もちろん、これらは厄介な状況ではあります。しかし、自分で学ぶ力をつけるチャンスとも言えます。
実際、グラフ作成マクロを扱えるようになれば、かなりレベルの高いマクロを書けるようになっているはずです。
[3] 書籍でもわかりやすい情報は少ない
上記でウェブサイトでは断片的で辞書的な情報が多いとお伝えしました。
それは書籍でも似たような状況です。実際、私はエクセルマクロ関係の書籍を数多く購入してきました。
しかしグラフ作成の事例が掲載されている書籍にはあまり出会っていません。
もちろん、たまに情報が記載されているのですが、事例として使いまわせる情報が少なく、苦戦を強いられました。
そのような経験もあり、この記事でグラフ作成を自動化したいあなたに情報を届けることにしました。
「グラフを自動作成する」マクロの難易度は?
以前エクセルマクロ初心者向けの勉強会を開催したとき、「グラフ自動作成はどれくらいで出来るようになりますか?」と聞かれたことがあります。
この質問への答えは、あなたがエクセルマクロVBAの基礎をどれくらい理解できているか次第です。
例えば、私が考えるVBAの基礎として、「if文」「for next構文」「変数」を理解していることがあります。
このような基礎について人に説明できるレベルであれば、グラフ自動作成のマクロは比較的すぐに出来るようになります。
なぜならグラフ作成のVBAでは考え方は共通で、セル編集やシートの転記のようなマクロと大きく異なるのは「見慣れないプログラム」を使うことだけです。
例えば英語でも難しい単語が出てきても、英語の基礎が出来ていれば辞書を使いながら理解することが可能です。
つまりあなたが、エクセルVBAの基本を抑えていれば試行錯誤しながら、なんとかコードを書きあげることができるでしょう。
したがって、エクセルマクロVBAの基本を理解できているかどうかが重要なのです。
逆に言えば、あまりにもVBAの理解が乏しいと、難しく感じるかもしれません。もし、エクセルマクロの基本と聞いて不安を感じる人は、入門レベルから学ぶことをお勧めします。
そうしないと、途中で躓いて最初からやり直しになってしまいます。
私のお勧めはこちらでエクセルVBAの基本について学ぶことをオススメします。
エクセルマクロVBAで折れ線グラフを連続自動作成するプログラム
それでは、ここからエクセルマクロVBAで折れ線グラフを連続自動作成するプログラムを紹介します。
これから解説するプログラムは以下の動画で解説しているマクロと同じです。(以下の動画は記事の冒頭紹介したものと同じです)
マクロ化する作業を簡単に説明します。下記の画像のようにデータ入ったエクセルがあります。
このエクセルデータの「A列のロット番号をx軸」に「B列のライン1の数値をy軸」にしてグラフを作成します。
この作業をライン2~ライン10まで行います。つまり、ライン1からライン10のデータをもとにグラフを自動作成します。
もちろん同じ書式で作成し、文字の大きさ、x軸y軸のテキスト、最大値や最小値はミスなく同じにそろえます。
プログラムの全体像|コピペして活用可能
「エクセルマクロVBAで折れ線グラフを連続自動作成する」事例をステップ毎に紹介します。具体的には、以下のステップを一つずつ説明していきます。
ステップ1|変数定義
ステップ2|変数に情報を入れ込む
ステップ3|for next構文でライン1~ライン10まで一つずつ処理する
ステップ4|シートを追加する
ステップ5|規格値上限、下限を入れ込む
ステップ6|追加したシートに値を入力する
ステップ7|折れ線グラフを作成してデータ範囲を選択する
ステップ8|折れ線グラフの要素数(折れ線数)を読み込む
ステップ9|折れ線グラフの要素数に応じて、折れ線の色を変更する
ステップ10|折れ線グラフのサイズを変更する
ステップ11|折れ線グラフの説明を変更
ステップ12|折れ線グラフのタイトル、x軸、y軸の情報を入力
ステップ13|折れ線グラフタイトルのテキスト、大きさを変更
ステップ14|折れ線グラフのx軸のテキスト、大きさを変更
ステップ15|折れ線グラフのy軸のテキスト、大きさを変更
ステップ16|ws2の設定を解放
ステップ17|ws1をエクセルの最前面にもってくる
以下は全体のプログラムです。動画と同じことをしたい人は、このままコピペしてご利用ください。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 |
'ステップ0|開始のおまじない Option Explicit Sub makechart() 'ステップ1|変数定義 Dim cmax As Long, i As Long, cnt As Long, mycol As Long, k As Long Dim ws1 As Worksheet, ws2 As Worksheet Dim jougen As Double, kagen As Double Dim str As String, text_t As String, text_x As String, text_y As String 'ステップ2|変数に情報を入れ込む Set ws1 = Worksheets(データ) cmax = ws1.Range(A1048576).End(xlUp).Row cnt = ws1.Range(XFD1).End(xlToLeft).Column 'ステップ3|for next構文でライン1~ライン10まで一つずつ処理する For k = 2 To cnt str = ws1.Range(A1).Offset(0, k - 1).Value 'ステップ4|シートを追加する Sheets.Add After:=ws1 Set ws2 = ActiveSheet ws2.Name = str 'ステップ5|規格値上限、下限を入れ込む jougen = ws1.Range(N2).Value kagen = ws1.Range(N3).Value 'ステップ6|追加したシートに値を入力する ws2.Range(A1:A ; cmax).Value = ws1.Range(A1:A ; cmax).Value ws2.Range(B1:B ; cmax).Value = ws1.Range(A1:A ; cmax).Offset(0, k - 1).Value ws2.Range(C1).Value = ws1.Range(M2).Value ws2.Range(C2:C ; cmax).Value = jougen ws2.Range(D1).Value = ws1.Range(M3).Value ws2.Range(D2:D ; cmax).Value = kagen 'ステップ7|折れ線グラフを作成してデータ範囲を選択する ActiveSheet.Shapes.AddChart2(332, xlLineMarkers).Select ActiveChart.SetSourceData Source:=ws2.Range(A1:D ; cmax) ActiveChart.ClearToMatchStyle 'ステップ8|折れ線グラフの要素数(折れ線数)を読み込む mycol = ActiveChart.FullSeriesCollection.Count 'ステップ9|折れ線グラフの要素数に応じて、折れ線の色を変更する For i = 1 To mycol If i = mycol - 1 Or i = mycol Then ActiveChart.FullSeriesCollection(i).Format.Fill.ForeColor.ObjectThemeColor = msoThemeColorAccent2 ActiveChart.FullSeriesCollection(i).Format.Line.ForeColor.ObjectThemeColor = msoThemeColorAccent2 ActiveChart.FullSeriesCollection(i).ChartType = xlLine Else ActiveChart.FullSeriesCollection(i).Format.Fill.ForeColor.ObjectThemeColor = msoThemeColorText1 ActiveChart.FullSeriesCollection(i).Format.Line.ForeColor.ObjectThemeColor = msoThemeColorText1 End If Next 'ステップ10|折れ線グラフのサイズを変更する With ActiveSheet.ChartObjects .Top = Range(J2).Top .Left = Range(J2).Left .Height = 500 .Width = 800 End With 'ステップ11|折れ線グラフの説明を変更 ActiveChart.HasLegend = True ActiveChart.Legend.Position = xlRight ActiveChart.Legend.Format.TextFrame2.TextRange.Font.Size = 14 'ステップ12|折れ線グラフのタイトル、x軸、y軸の情報を入力 text_t = str text_x = ws1.Range(N4).Value text_y = ws1.Range(N5).Value 'ステップ13|折れ線グラフタイトルのテキスト、大きさを変更 ActiveChart.HasTitle = True ActiveChart.ChartTitle.Characters.Text = text_t ActiveChart.ChartTitle.Format.TextFrame2.TextRange.Font.Size = 14 ActiveChart.Axes(xlCategory).TickLabels.Font.Size = 14 ActiveChart.Axes(xlValue).TickLabels.Font.Size = 14 'ステップ14|折れ線グラフのx軸のテキスト、大きさを変更 ActiveChart.Axes(xlCategory, xlPrimary).HasTitle = True ActiveChart.Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = text_x ActiveChart.Axes(xlCategory, xlPrimary).AxisTitle.Characters.Font.Size = 14 'ステップ15|折れ線グラフのy軸のテキスト、大きさを変更 ActiveChart.Axes(xlValue, xlPrimary).HasTitle = True ActiveChart.Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = text_y ActiveChart.Axes(xlValue, xlPrimary).AxisTitle.Characters.Font.Size = 14 'ステップ16|ws2の設定を解放 Set ws2 = Nothing Next 'ステップ17|ws1をエクセルの最前面にもってくる ws1.Activate End Sub |
折れ線グラフを連続で作成するマクロ|範囲選択、タイトル、軸ラベル、色の変更まで
それでは、プログラムの解説をしていきます。以下の17ステップに分けて説明します。
ステップ1|変数定義
ステップ2|変数に情報を入れ込む
ステップ3|for next構文でライン1~ライン10まで一つずつ処理する
ステップ4|シートを追加する
ステップ5|規格値上限、下限を入れ込む
ステップ6|追加したシートに値を入力する
ステップ7|折れ線グラフを作成してデータ範囲を選択する
ステップ8|折れ線グラフの要素数(折れ線数)を読み込む
ステップ9|折れ線グラフの要素数に応じて、折れ線の色を変更する
ステップ10|折れ線グラフのサイズを変更する
ステップ11|折れ線グラフの説明を変更
ステップ12|折れ線グラフのタイトル、x軸、y軸の情報を入力
ステップ13|折れ線グラフタイトルのテキスト、大きさを変更
ステップ14|折れ線グラフのx軸のテキスト、大きさを変更
ステップ15|折れ線グラフのy軸のテキスト、大きさを変更
ステップ16|ws2の設定を解放
ステップ17|ws1をエクセルの最前面にもってくる
マクロを動かす前の状態は以下です。
ステップ0|開始のおまじない
1 2 |
Option Explicit Sub makechart() |
1行目|Option Explicitで変数設定を強制する
2行目|makechartという件名のプログラムとして設定
ステップ1|変数定義
1 2 3 4 5 |
'ステップ1|変数定義 Dim cmax As Long, i As Long, cnt As Long, mycol As Long, k As Long Dim ws1 As Worksheet, ws2 As Worksheet Dim jougen As Double, kagen As Double Dim str As String, text_t As String, text_x As String, text_y As String |
1行目|cmax, i, cnt, mycol, k をLong(整数)型で変数定義
2行目|ws1, ws2 をworksheet(ワークシート)型で変数定義
3行目|jougen, kagenをDouble(数値)型で設定
4行目|str, text_t, text_x, text_y をstring(文字列)型で変数設定
ステップ2|変数に情報を入れ込む
1 2 3 4 |
'ステップ2|変数に情報を入れ込む Set ws1 = Worksheets(データ) cmax = ws1.Range(A1048576).End(xlUp).Row cnt = ws1.Range(XFD1).End(xlToLeft).Column |
1行目|シート「データ」をws1で設定
2行目|ws1のセルA1048576からセルを上に数えていって一番最初に数値が入るセルの行を設定(つまり、ws1のA列の最終行を設定)
3行目|ws1のセルXFD1からセルを左に数えていって一番最初に数値が入るセルの行を設定(つまり、ws1の1行目の最終列を設定)
ステップ3|for next構文でライン1~ライン10まで一つずつ処理する
1 2 3 |
'ステップ3|for next構文でライン1~ライン10まで一つずつ処理する For k = 2 To cnt str = ws1.Range(A1).Offset(0, k - 1).Value |
1行目|for next構文で2~cnt(11)まで一つずつ数値を入れる
2行目|ws1のセルA1を基準に右に(k-1)番目のセルの値をstrにする
k=1ならセルA1
k=2ならセルA2となる
ステップ4|シートを追加する
1 2 3 4 |
'ステップ4|シートを追加する Sheets.Add After:=ws1 Set ws2 = ActiveSheet ws2.Name = str |
1行目|ws1のシートの後ろにシートを新しく追加
2行目|新しく追加したシートをws2とする
3行目|ws2の名称をstrにする
ステップ4終了時点で、以下の状態になります。
ステップ5|規格値上限、下限を入れ込む
1 2 3 |
'ステップ5|規格値上限、下限を入れ込む jougen = ws1.Range(N2).Value kagen = ws1.Range(N3).Value |
1行目|ws1のセルN2の値をjougenにする
2行目|ws1のセルN3の値をkagenにする
ステップ6|追加したシートに値を入力する
1 2 3 4 5 6 7 |
'ステップ6|追加したシートに値を入力する ws2.Range(A1:A ; cmax).Value = ws1.Range(A1:A ; cmax).Value ws2.Range(B1:B ; cmax).Value = ws1.Range(A1:A ; cmax).Offset(0, k - 1).Value ws2.Range(C1).Value = ws1.Range(M2).Value ws2.Range(C2:C ; cmax).Value = jougen ws2.Range(D1).Value = ws1.Range(M3).Value ws2.Range(D2:D ; cmax).Value = kagen |
1行目|ws2のセルA1~セルAcmaxまでの値をws1のセルA1~セルAcmaxの値にする
2行目|ws2のセルB1~セルBcmaxまでの値をws1の(セルA1~セルAcmax)を基準にして右に(k-1)動かしたセルの値とする
つまり、k=3ならば
→「ws2のセルB1~セルBcmaxまでの値をws1の(セルA1~セルAcmax)を基準にして右に2動かしたセルの値とする」
→「ws2のセルB1~セルBcmaxまでの値をws1の(セルC1~セルCcmax)の値とする」となる
3行目|ws2のセルC1の値をws1のセルM2の値(“規格上限値”)にする
4行目|ws2のセルC2~セルCcmaxまでの値をjougenにする
5行目|ws2のセルD1の値をws1のセルM3の値(“規格下限値”)にする
6行目|ws2のセルD2~セルDcmaxまでの値をkagenにする
ステップ6終了時点で、以下の状態になります。
ステップ7|折れ線グラフを作成してデータ範囲を選択する
1 2 3 4 |
'ステップ7|折れ線グラフを作成してデータ範囲を選択する ActiveSheet.Shapes.AddChart2(332, xlLineMarkers).Select ActiveChart.SetSourceData Source:=ws2.Range(A1:D ; cmax) ActiveChart.ClearToMatchStyle |
1行目|アクティブシートに折れ線グラフを選択する
2行目|1行目で追加したグラフのデータ範囲をws2のセルA1からDcmaxにする
3行目|アクティブチャートのグラフ要素の書式を自動にリセットする
ステップ7終了時点で、以下の状態になります。
ステップ8|折れ線グラフの要素数(折れ線数)を読み込む
1 2 |
'ステップ8|折れ線グラフの要素数(折れ線数)を読み込む mycol = ActiveChart.FullSeriesCollection.Count |
1行目|アクティブチャート(折れ線グラフ)の要素数を読み込む(ここでは、グラフ内の折れ線の数となる)
ステップ9|折れ線グラフの要素数に応じて、折れ線の色を変更する
1 2 3 4 5 6 7 8 9 10 11 |
'ステップ9|折れ線グラフの要素数に応じて、折れ線の色を変更する For i = 1 To mycol If i = mycol - 1 Or i = mycol Then ActiveChart.FullSeriesCollection(i).Format.Fill.ForeColor.ObjectThemeColor = msoThemeColorAccent2 ActiveChart.FullSeriesCollection(i).Format.Line.ForeColor.ObjectThemeColor = msoThemeColorAccent2 ActiveChart.FullSeriesCollection(i).ChartType = xlLine Else ActiveChart.FullSeriesCollection(i).Format.Fill.ForeColor.ObjectThemeColor = msoThemeColorText1 ActiveChart.FullSeriesCollection(i).Format.Line.ForeColor.ObjectThemeColor = msoThemeColorText1 End If Next |
1行目|for next構文で1~mycol(折れ線数)を一つずつ数値を入れる
2行目|もし、i が mycol-1 もしくは mycolだったら(mycok=4のとき、「i= 3 もしくは i= 4のだったら」となる)
3行目|アクティブチャート(折れ線グラフ)の要素番号(i番目)の折れ線グラフの各点の色をmsoThemeColorAccent2(オレンジ)とする
4行目|アクティブチャート(折れ線グラフ)の要素番号(i番目)の折れ線グラフの線の色をmsoThemeColorAccent2(オレンジ)とする
5行目|アクティブチャート(折れ線グラフ)の要素番号(i番目)の折れ線を線のみにする(点を除去)
6行目|もし、i が 2行目以外のときは
7行目|アクティブチャート(折れ線グラフ)の要素番号(i番目)の折れ線グラフの各点の色をmsoThemeColorText1(黒)とする
8行目|アクティブチャート(折れ線グラフ)の要素番号(i番目)の折れ線グラフの線の色をmsoThemeColorText1(黒)とする
9行目|if文の終わり
10行目|for next文の終わり
ステップ9終了時点で、以下の状態になります。
ステップ10|折れ線グラフの位置やサイズを変更する
1 2 3 4 5 6 7 |
'ステップ10|折れ線グラフのサイズを変更する With ActiveSheet.ChartObjects .Top = Range(J2).Top .Left = Range(J2).Left .Height = 500 .Width = 800 End With |
1行目|with構文で、以下に続くプログラムの先頭の「ActiveSheet.ChartObjects」 を省略する
2行目|(アクテイブシートのチャート(折れ線グラフ)の)上部をセルJ2の上部と同じ場所に設定する
3行目|(アクテイブシートのチャート(折れ線グラフ)の)左側をセルJ2の左側と同じ場所に設定する
4行目|(アクテイブシートのチャート(折れ線グラフ)の)高さを500とする
5行目|(アクテイブシートのチャート(折れ線グラフ)の)幅を800とする
6行目|With構文の終わり
ステップ10終了時点で、以下の状態になります。
ステップ11|折れ線グラフの説明を変更
1 2 3 4 |
'ステップ11|折れ線グラフの説明を変更 ActiveChart.HasLegend = True ActiveChart.Legend.Position = xlRight ActiveChart.Legend.Format.TextFrame2.TextRange.Font.Size = 14 |
1行目|アクテイブチャート(折れ線グラフ)の説明を表示する
2行目|アクテイブチャート(折れ線グラフ)の説明をグラフ右に表示する
3行目|アクテイブチャート(折れ線グラフ)の説明のテキストサイズを14にする
ステップ11終了時点で、以下の状態になります。
ステップ12|折れ線グラフのタイトル、x軸、y軸の情報を入力
1 2 3 4 |
'ステップ12|折れ線グラフのタイトル、x軸、y軸の情報を入力 text_t = str text_x = ws1.Range(N4).Value text_y = ws1.Range(N5).Value |
1行目|text_t を str にする
2行目|text_x を ws1のセルN4の値にする
3行目|text_y を ws1のセルN5の値にする
ステップ13|折れ線グラフタイトルのテキスト、大きさを変更
1 2 3 4 5 6 |
'ステップ13|折れ線グラフタイトルのテキスト、大きさを変更 ActiveChart.HasTitle = True ActiveChart.ChartTitle.Characters.Text = text_t ActiveChart.ChartTitle.Format.TextFrame2.TextRange.Font.Size = 14 ActiveChart.Axes(xlCategory).TickLabels.Font.Size = 14 ActiveChart.Axes(xlValue).TickLabels.Font.Size = 14 |
1行目|アクテイブチャート(折れ線グラフ)のタイトルを表示する
2行目|アクテイブチャート(折れ線グラフ)のタイトルを text_t にする
3行目|アクテイブチャート(折れ線グラフ)のタイトルのテキストサイズを14にする
4行目|アクテイブチャート(折れ線グラフ)のx軸(xlCategory)の要素のテキストサイズを14にする
5行目|アクテイブチャート(折れ線グラフ)のy軸(xlValue)の要素のテキストサイズを14にする
ステップ13終了時点で、以下の状態になります。
ステップ14|折れ線グラフのx軸のテキスト、大きさを変更
1 2 3 4 |
'ステップ14|折れ線グラフのx軸のテキスト、大きさを変更 ActiveChart.Axes(xlCategory, xlPrimary).HasTitle = True ActiveChart.Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = text_x ActiveChart.Axes(xlCategory, xlPrimary).AxisTitle.Characters.Font.Size = 14 |
1行目|アクテイブチャート(折れ線グラフ)のx軸のラベルを表示する
2行目|アクテイブチャート(折れ線グラフ)のx軸のラベルの表示を text_x にする
3行目|アクテイブチャート(折れ線グラフ)のx軸のラベルの表示をテキストサイズ14にする
ステップ14終了時点で、以下の状態になります。
ステップ15|折れ線グラフのy軸のテキスト、大きさを変更
1 2 3 4 |
'ステップ15|折れ線グラフのy軸のテキスト、大きさを変更 ActiveChart.Axes(xlValue, xlPrimary).HasTitle = True ActiveChart.Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = text_y ActiveChart.Axes(xlValue, xlPrimary).AxisTitle.Characters.Font.Size = 14 |
1行目|アクテイブチャート(折れ線グラフ)のy軸のラベルを表示する
2行目|アクテイブチャート(折れ線グラフ)のy軸のラベルの表示を text_y にする
3行目|アクテイブチャート(折れ線グラフ)のy軸のラベルの表示をテキストサイズ14にする
ステップ15終了時点で、以下の状態になります。
ステップ16|ws2の設定を解放
1 2 3 |
'ステップ16|ws2の設定を解放 Set ws2 = Nothing Next |
1行目|ws2を解放する
2行目|for next構文の終わり
i=cntとなるまで、ステップ3~ステップ16を繰り返す
ステップ17|ws1をエクセルの最前面にもってくる
1 2 3 |
'ステップ17|ws1をエクセルの最前面にもってくる ws1.Activate End Sub |
1行目|ws1をエクセルの最前面にもってくる
2行目|プログラムの終わり
プログラムの説明は以上です。
エクセルマクロVBAの始め方・使い方
エクセルマクロVBAの使い方から知りたい人は、以下の記事を読んでみてください。
上記で紹介したプログラムコードをどのように使えば、グラフ作成マクロを使えるようになるのかが分かります。
ぜひ、あなた自身が勉強して、自分で編集してもっといいものを作成できるようになってほしいと思います。
エクセルを自分用に編集アレンジして使いたいなら、エクセルマクロの無料動画で学ぼう
この記事では、グラフの自動作成のマクロについて紹介しました。ここで紹介したマクロを利用すれば、作業の自動化が可能になります。
しかしデメリットもあります。それはカスタムできないことです。
なぜなら、色々な要望が増えるからです。
この動画を見たとき、「もっと○○ができるのでは?」や「ここはなんとかならないのか」と感じる人は少なくないはずです。
例えば、「他の条件を付け加えたい」や「日付毎に条件を変えたい」といった要望が出るかもしれません。
このような要望を満たすには、マクロを勉強して自力でマクロを編集できるようになる必要があります。
もし、自力でマクロを編集できるようになれば、今より仕事の効率はグッと上がります。
実際、私も自力でマクロを書けるようになってからは、仕事の生産性が一気に上がりました。
他の人が30分~1時間かけて行う仕事が、ボタン一つで終わらせることができるようになったのです。その結果、周囲からの信頼も増し、仕事で高い評価を得られるようになりました。
ただ、要望に応えるようになるためには、マクロを学ぶ必要があります。
まずは無料でマクロを勉強してみる
ウェブや書籍で勉強すれば、マクロを習得できると考えている人は少なくありません。
しかし、仕事で使えるマクロを習得したいなら、仕事で使える部分に特化した教材で学ぶことをお勧めします。
なぜなら、ウェブや書籍には仕事に関係しない部分まで提供していることが多いからです。
例えば、マクロ初心者なのに配列を学ぼうとする人がいます。実は配列なしでも仕事で使えるマクロを書くことは可能です。
しかし、マクロ初心者ほど「全ての知識が必要だ」と考えて、無駄な学習に時間を使ってしまうのです。詳しくは、こちらの記事で紹介しています。
そこで、私がお勧めするのは仕事に直結するマクロ教材です。とくにお勧めするのは、こちらの無料オンライン動画です。
なぜなら、仕事に直結する部分に絞って、エクセルマクロを学ぶことができるからです。
マクロの作り方・考え方から解説しているので、教材をしっかり学べばここで紹介したマクロをゼロから書けるようになります。
マクロ初心者が、仕事に直結したいマクロを学ぶなら、まずはこちらの無料オンライン動画を試すのがいいです。
興味がある人は、まずは無料でエクセルマクロの勉強を始めてみてください。
もっと学びたいと感じたら、さらに深く勉強をしてみることをお勧めします。