動作検証バージョン:64bit Windows 10 Pro + 32bit Excel(バージョン2208 ビルド15601.20148 Microsoft Store)
「vbaでグラフの凡例の枠線をなしにする」
といった検索キーワードで、このサイト『インストラクターのネタ帳』へアクセスがありました。
VBAで凡例の枠線を非表示にする基本
凡例の表示されているグラフがアクティブな状態で、以下のコードを実行すると、凡例の枠線が非表示になります。
ActiveChart.Legend.Format.Line.Visible = msoFalse
グラフがアクティブでない状態や、そもそも凡例が表示されていない場合には、実行時エラーが発生します。
下図のような階層を辿ると、凡例の枠線の表示/非表示を操作できます。
Chartオブジェクト └ Legendオブジェクト └ ChartFormatオブジェクト └ LineFormatオブジェクト └ Visibleプロパティ
取得するためのプロパティの名前と、取得できるオブジェクトの名前とが一致していない部分があるため、Chartを操作するExcel VBAのコードに慣れていない方には、難易度が高いでしょうか。
凡例の枠線を非表示にするサンプルマクロ
以下のExcelマクロを実行すると、アクティブシート上に存在する全埋め込みグラフの枠線が非表示になります。
Sub 凡例の枠線を非表示に()
Dim cho As ChartObject
For Each cho In ActiveSheet.ChartObjects
If cho.Chart.HasLegend Then
cho.Chart.Legend.Format.Line.Visible = msoFalse
End If
Next
End Sub
Dim cho As ChartObject
For Each cho In ActiveSheet.ChartObjects
If cho.Chart.HasLegend Then
cho.Chart.Legend.Format.Line.Visible = msoFalse
End If
Next
End Sub
ワークシート上に存在する全ChartObjectオブジェクトに対するFor Each~Next文の中で、
Dim cho As ChartObject For Each cho In ActiveSheet.ChartObjects
先ほどお伝えした「Chart - Legend - ChartFormat - LineFormat - Visibleプロパティ」を操作しています。
cho.Chart.Legend.Format.Line.Visible = msoFalse
凡例自体が表示されていないときに、上記の操作を行おうとすると実行時エラーが発生してしまうため、Chart.HasLegendプロパティで「凡例が存在する場合」という条件分岐を行っています。
If cho.Chart.HasLegend Then
最終更新日時:2022-09-30 17:52
[スポンサードリンク]
Home » エクセルマクロ・Excel VBAの使い方 » グラフ・Chart » VBAで凡例の枠線を非表示に