「エクセル マクロ グラフ 凡例 消去」
「excel vba グラフ 凡例 非表示」
「excel vba 凡例 消す」
「excelvba 凡例 削除」
といった検索キーワードで、このサイト・インストラクターのネタ帳へのアクセスが時折あります。
グラフの凡例を削除・非表示にするExcel VBA(Visual Basic for Applications)のコードを探していた方による検索です。
グラフの凡例はLegendオブジェクト
VBAからグラフの凡例を操作するには、ExcelのLegendオブジェクトを使用し、
凡例を削除するにはDeleteメソッド、Legendオブジェクトの親オブジェクトであるChartオブジェクトのHasLegendプロパティが使えます。
Legend.Deleteメソッドで全グラフシートの凡例を削除するサンプルマクロ
以下のようなSubプロシージャで、アクティブなブックのすべてのグラフシートから凡例を削除できます。
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プロシージャでも、アクティブなブックのすべてのグラフシートから凡例を削除できます。
Dim cht As Chart
For Each cht In Charts
cht.HasLegend = False
Next
End Sub
先のLegend.Deleteメソッドによる凡例削除のプロシージャで、凡例が存在するかどうかチェックするのに利用した、Chart.HasLegendプロパティをFalseに設定することでも凡例を削除できます。
Legend.Deleteメソッドのほうが、Deleteという単語から削除することが、より明確にはなりますが、シンプルなコードとなるChart.HasLegendプロパティのほうが良さそうです。
アクティブシートの全グラフオブジェクトを削除する
グラフオブジェクトから凡例を削除する場合は、以下のようなプロシージャです。
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
- Newer:Rows.Countとは
- Older:PowerPoint VBAでTEXT関数は?
Home » エクセルマクロ・Excel VBAの使い方 » グラフ・Chart » VBAでグラフの凡例を削除する