Excel VBAで右クリックから自動グラフを作成する方法(マクロで操作を効率化)

Excelでは、VBAを使ってセルを右クリックしたときにグラフを自動作成する処理を実装できます。本記事では、特定の表範囲内でセルを右クリックしたときに、選択行のデータで折れ線グラフを新規作成するマクロの実装方法をご紹介します。


目次

完成イメージ

  • 対象の表の任意のセルを右クリックすると、その行のデータをもとにグラフが自動で作成されます。
  • 既存のグラフは削除され、常に最新のグラフが表示されます。
  • グラフはセルの右下に自動的に配置され、凡例なしのコンパクトな折れ線グラフになります。

サンプルコード(VBA)

以下のコードをシートモジュールと標準モジュールにそれぞれ記述してください。

① シートモジュール(例:Sheet1)

Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
    Dim dataBlock As Range
    Set dataBlock = Range("B3:N20") ' 対象となる表の範囲

    If Not Application.Intersect(Target, dataBlock) Is Nothing Then
        Cancel = True ' 右クリックメニューを表示しない
        Call createQuickChart(dataBlock, Target)
    End If
End Sub

② 標準モジュール

Sub createQuickChart(dataBlock As Range, TargetCell As Range)
    Dim rowRange As Range
    Dim offsetRow As Long

    Call clearOldCharts

    ' 表の1行目(見出し)と選択行をグラフ範囲に設定
    offsetRow = TargetCell.Row - dataBlock.Row + 1
    Set rowRange = Union(dataBlock.Rows(1), dataBlock.Rows(offsetRow))

    ' グラフを挿入し、位置を調整
    With ActiveSheet.Shapes.AddChart2(240, xlLineMarkers)
        .Left = TargetCell.Offset(0, 2).Left
        .Top = TargetCell.Offset(1, 0).Top
        With .Chart
            .SetSourceData Source:=rowRange
            .HasLegend = False
        End With
    End With
End Sub

Sub clearOldCharts()
    If ActiveSheet.ChartObjects.Count > 0 Then
        ActiveSheet.ChartObjects.Delete
    End If
End Sub

コードの解説

  • Worksheet_BeforeRightClick:セルを右クリックしたときのイベントです。対象の範囲内であれば、標準モジュールの関数 createQuickChart を呼び出します。
  • createQuickChart:見出し行+選択行を元に折れ線グラフを新規作成し、セルの右下に配置します。
  • clearOldCharts:グラフを毎回削除してから新規作成することで、複数のグラフが残らないようにしています。

利用のメリット

  • 手作業でグラフを作成する手間を省けます。
  • データの動的な可視化がすぐに行えるため、プレゼンやチェック作業にも最適です。
  • マウス操作のみでグラフが生成されるため、非エンジニアでも使いやすい機能です。

注意点

  • ChartObjects(1) のようなインデックス操作を使わず、都度グラフを削除する設計にしています。
  • セル範囲 B3:N20 は任意に変更可能です。
  • グラフの種類(xlLineMarkers)は用途に応じて変更いただけます。

まとめ

Excel VBAを使えば、セルの右クリック操作に対して即座にグラフを作成するマクロを実装できます。視覚的な情報がすぐに得られるようになり、データ分析や報告資料の準備に非常に役立ちます。

日々の業務効率化や操作性の向上を図りたい方は、ぜひ導入をご検討ください。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次