【ExcelVBA・マクロ】エクセルでグラフを自動で作成するVBAコード

ExcelVBA

エクセルのマクロ(自動実行)を使用してグラフを自動で作成できるVBAコードをご紹介します。

グラフは手動で作成することが多いと思いますが、マクロを使用すると自動でエクセルにグラフを作ってくれます。

始める前に

今回使用しているExcelデータは、以前の記事でご紹介した「BMIを自動で計算するVBAコード」をもとに作成したものです。
そのため、記事をご覧いただいていない方にとっては、内容が少し分かりにくい部分があるかもしれません。

今回の内容をよりスムーズにご理解いただくためにも、ぜひ以下の記事をご一読いただければと思います。

【ExcelVBA・マクロ】エクセルでBMIを自動計算する方法
「ExcelでBMIを手計算してるけど、いちいち式を入力するのが面倒…」 「体重や身長を変えたら、自動でBMIも更新してほしい」 そんなニーズに応えるのが、Excel VBAによるBMI自動計算ツール 今回は、身長(cm)と体重(kg)を入力すると、BMIと判定基準を表示するマクロをご紹介します。

Excelでグラフを自動作成するVBAコード

エクセルデータの作成ができたら、さっそくグラフ自動作成をしていきましょう。

以前作成した「BMI計算」のエクセルファイルを開いてください。

コマンドボタンの作成

「開発」タブから「挿入」をクリックしてActiveXコントロール内の「コマンドボタン」をクリック

適切な位置にボタンを配置

ボタンを右クリックして「プロパティ」をクリック

オブジェクト名を「graph」Captionを「グラフ作成」に変更してプロパティを閉じる

これでコマンドボタンの作成は終了です。いよいよVBAコードを作成しましょう。

VBAコード

さきほど作成したコマンドボタンを右クリックして「コードの表示」をクリック

表示されているエディターの「Private Sub graph_Click()」内にコードを入力

※同画面内にBMI計算用のコードが既に表示されていますが、こちらは編集しないでください。

グラフ作成用VBAコード

Private Sub graph_Click()

    Dim graph As ChartObject
    Dim lastRow As Long
    Dim ws As Worksheet
    Set ws = Worksheets("Sheet1")
    
    ' 既存のグラフを削除
    For Each graph In ws.ChartObjects
        graph.Delete
    Next
    
    ' 最終行を取得
    lastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row
    
    ' グラフ作成
    Set graph = ws.ChartObjects.Add(Left:=300, Width:=400, Top:=50, height:=300)
    With graph.Chart
        .ChartType = xlColumnClustered
        .SetSourceData Source:=ws.Range("B2:B" & lastRow & ",E2:E" & lastRow)
        .HasTitle = True
        .ChartTitle.Text = "BMIグラフ"
        .Axes(xlCategory).HasTitle = True
        .Axes(xlCategory).AxisTitle.Text = "名前"
        .Axes(xlValue).HasTitle = True
        .Axes(xlValue).AxisTitle.Text = "BMI値"
    End With

End Sub

コードの詳細説明

このコードはシート内にグラフがある場合、削除するコードとなります。

For Each graph In ws.ChartObjects
        graph.Delete
    Next

シートのA列の最終行を取得するコードです。

lastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row

グラフの位置やサイズを指定しています。

Set graph = ws.ChartObjects.Add(Left:=300, Width:=400, Top:=50, height:=300)

グラフの種類を指定しています。今回は縦棒グラフです。

.ChartType = xlColumnClustered

グラフに使うデータの範囲(B列:名前 E列:BMI)を指定しています。

.SetSourceData Source:=ws.Range("B2:B" & lastRow & ",E2:E" & lastRow)

グラフタイトルを「BMIグラフ」と指定しています。

.HasTitle = True
.ChartTitle.Text = "BMIグラフ"

横軸(カテゴリ軸)にタイトルを表示し、「名前」と表示します。

.Axes(xlCategory).HasTitle = True
.Axes(xlCategory).AxisTitle.Text = "名前"

縦軸(値軸)にタイトルを表示し、「BMI値」と表示します。

.Axes(xlValue).HasTitle = True
.Axes(xlValue).AxisTitle.Text = "BMI値"

これでコードの入力を終了です。エディターを閉じて実際にマクロを実行してみましょう。

マクロ実行

「グラフ作成」ボタンをクリックしてください

マクロが実行されてシート内にが自動でグラフが作成されました!

まとめ

いかがでしたでしょうか。Excelでグラフを自動作成できれば、作業がグッと楽になります。

グラフの種類などを変更して作成してみるのを面白いと思います。

コメント

タイトルとURLをコピーしました