Home » エクセルマクロ・Excel VBAの使い方 » グラフ・Chart » VBAでグラフの凡例を削除する

VBAでグラフの凡例を削除する

対象:Excel2007, Excel2010, Excel2013, Windows版Excel2016

「エクセル マクロ グラフ 凡例 消去」
「excel vba グラフ 凡例 非表示」
「excel vba 凡例 消す」
「excelvba 凡例 削除」
といった検索キーワードで、このサイト・インストラクターのネタ帳へのアクセスが時折あります。

グラフの凡例を削除・非表示にするExcel VBA(Visual Basic for Applications)のコードを探していた方による検索です。

グラフの凡例はLegendオブジェクト

VBAからグラフの凡例を操作するには、ExcelのLegendオブジェクトを使用し、

VBAでグラフの凡例を削除する

凡例を削除するにはDeleteメソッド、Legendオブジェクトの親オブジェクトであるChartオブジェクトのHasLegendプロパティが使えます。

Legend.Deleteメソッドで全グラフシートの凡例を削除するサンプルマクロ

以下のようなSubプロシージャで、アクティブなブックのすべてのグラフシートから凡例を削除できます。

Sub 全グラフシートの凡例を削除する_Legend_Delete()
 Dim cht As Chart
 For Each cht In Charts
  If cht.HasLegend Then cht.Legend.Delete
 Next
End Sub

凡例が存在しないときにLegend.Deleteメソッドを実行すると、エラーとなってしまいますので、ChartオブジェクトのHasLegendプロパティを事前に調べています。
  If cht.HasLegend Then cht.Legend.Delete

Chart.HasLegendプロパティで凡例を削除するサンプルマクロ

以下のようなSubプロシージャでも、アクティブなブックのすべてのグラフシートから凡例を削除できます。

Sub 全グラフシートの凡例を削除する_HasLegend()
 Dim cht As Chart
 For Each cht In Charts
  cht.HasLegend = False
 Next
End Sub

先のLegend.Deleteメソッドによる凡例削除のプロシージャで、凡例が存在するかどうかチェックするのに利用した、Chart.HasLegendプロパティをFalseに設定することでも凡例を削除できます。

VBAでグラフの凡例を削除する

Legend.Deleteメソッドのほうが、Deleteという単語から削除することが、より明確にはなりますが、シンプルなコードとなるChart.HasLegendプロパティのほうが良さそうです。

アクティブシートの全グラフオブジェクトを削除する

グラフオブジェクトから凡例を削除する場合は、以下のようなプロシージャです。

Sub アクティブシートの全グラフオブジェクトの凡例を削除する()
 Dim cho As ChartObject
 For Each cho In ActiveSheet.ChartObjects
  cho.Chart.HasLegend = False
 Next
End Sub

上記のSubプロシージャを実行すると、アクティブシートの全グラフオブジェクトの凡例を削除できます。

アクティブシート上の全グラフオブジェクトに対してFor Each~Nextループを回して、
 For Each cho In ActiveSheet.ChartObjects

ChartオブジェクトのHasLegendプロパティをFalseにしています。
  cho.Chart.HasLegend = False

最終更新日時:2022-06-25 13:57

[スポンサードリンク]

Home » エクセルマクロ・Excel VBAの使い方 » グラフ・Chart » VBAでグラフの凡例を削除する

「グラフ・Chart」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.