【本日のミッション】
Excel VBAにて、既存のグラフに凡例を追加せよ。
目次
ミッションの概要
Excel VBAにて、既存のグラフに凡例を追加せよ、というのが今回のミッションです。
データには気象庁 過去の気象データを使用させて頂きました。
気象庁 過去の気象データ・ダウンロード
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
プロシージャ
アクティブシートの「グラフ 1」の下部に、凡例を設定するコードです。
Sub グラフ凡例追加() '【変数】 Dim cht As Chart '処理対象Chartオブジェクト '■変数セット Set cht = ActiveSheet.ChartObjects("グラフ 1").Chart '処理対象Chartオブジェクト '■グラフ凡例追加 cht.HasLegend = True 'グラフ凡例表示 cht.Legend.Position = xlLegendPositionBottom '凡例を下部に表示 cht.Legend.IncludeInLayout = True '凡例をグラフと重ねない設定 End Sub
HasLegendプロパティ
Chartオブジェクト.HasLegend = 値
値 | 説明 |
True | 凡例を表示する。 |
False | 凡例を非表示にする。 |
True: 凡例を表示
値を「True」にすると 凡例が表示されます。
HasLegendが「True」になっていないと、LegendオブジェクトのIncludeInLayoutプロパティ・Positionプロパティを設定する際にエラーが表示されます。
Chartオブジェクト.HasLegend = True
False: 凡例を非表示
値を「False」にすると、凡例が非表示になります。
Chartオブジェクト.HasLegend = False
Legend オブジェクト
グラフの凡例のことです。
HasLegendプロパティに「True」を指定して、凡例を表示させた後、Legend オブジェクトの使用が可能になります。
実行時エラー ’1004′: このオブジェクトには凡例がありません。
HasLegendプロパティに「Ture」が指定されていない場合、Legend オブジェクトを操作しようとするとエラーになります。
実行時エラー ’1004': このオブジェクトには凡例がありません。
Legend.IncludeInLayout プロパティ
凡例をグラフに重ねるかどうかを指定します。
Chartオブジェクト.Legend.IncludeInLayout = 値
値 | 説明 |
True | 凡例をグラフに重ねずに表示する。 |
False | 凡例をグラフに重ねて表示する。 |
凡例の書式設定ー凡例のオプションの「凡例をグラフに重ねずに表示する」の設定になります。
HasLegendプロパティに「Ture」が指定されていない場合、Legend.IncludeInLayout プロパティを設定する際にエラーが表示されます。
True:凡例をグラフに重ねずに表示する。
値を「True」にすると凡例をグラフに重ねずに表示します。
False:凡例をグラフに重ねて表示する。
値を「False」にすると凡例をグラフに重ねて表示します。
Legend.IncludeInLayout = True なのにグラフと凡例が重なってしまう
Legend.IncludeInLayout = True 「凡例をグラフに重ねないで表示する。」としても、プロットエリアが自動的にサイズ変更してくれない時があります。
一度プロットエリアのサイズを手動で変更すると、それ以降はLegend.IncludeInLayoutプロパティの設定が、正しく動作せず、グラフと凡例が重なったままになります。
Legend.Positionプロパティ
凡例のグラフ上での位置を指定します。
ChartオブジェクトLegend.Position = 値
値には下記「定数」または「値」を指定します。
定数 | 値 | 説明 |
---|---|---|
xlLegendPositionBottom | -4107 | グラフの下 |
xlLegendPositionCorner | 2 | グラフの輪郭線の右上隅 |
xlLegendPositionCustom | -4161 | 任意の位置 |
xlLegendPositionLeft | -4131 | グラフの左 |
xlLegendPositionRight | -4152 | グラフの右 |
xlLegendPositionTop | -4160 | グラフの上 |
凡例の書式設定ー凡例のオプションの「凡例の位置」の設定になります。
ChartオブジェクトLegend.Position = xlLegendPositionBottom
参照
系列が1つのグラフを自動大量連続作成(Excel VBA)
「実行時エラー 1004」を出さずに、ワークシート内のグラフを「グラフ 元」以外全て削除(Excel VBA)
グラフの参照先を変えると勝手にグラフの色が変わる現象を解決せよ
系列が複数あるグラフを自動大量連続作成(Excel VBA)
n行毎の改ページ設定 「実行時エラー1004 RangeクラスのPageBreakプロパティを設定できません」の原因(Excel VBA)
参照データ数が異なる・参照先が変動する月別グラフを自動大量連続作成(Excel VBA)
複数系列・参照データ数が異なる・参照先が変動する月別グラフを自動大量連続作成(Excel VBA)
大量の画像やグラフ等のオブジェクトで画面表示が遅いのを解決(Excel)
エクセル シートに画像が存在するかどうか(有無)を調べる方法(Excel VBA)
エクセルシート上 全てのオブジェクト(画像・図形・グラフ等)を選択し、削除する(Excel VBA)
エクセルシート上のオブジェクト(図形・画像・グラフ等)の件数を数える方法(Excel VBA)
エクセル シートにグラフが存在するかどうか(有無)を調べる方法(Excel VBA)
エクセル シートに図形が存在するかどうか(有無)を調べる方法(Excel VBA)
エクセル 選択しているセル範囲に写真が存在しているか(有無)を確認(Excel VBA)
エクセル 選択しているセル範囲にグラフが存在しているか(有無)を確認(Excel VBA)
エクセル 選択しているセル範囲に図形が存在しているか(有無)を確認(Excel VBA)
エクセル 選択セル範囲の写真を削除する(Excel VBA)
エクセル 選択セル範囲のグラフを削除する(Excel VBA)
エクセル 選択セル範囲の図形を削除する(Excel VBA)
Excel VBAでワードを起動して文字を入力操作(Excel VBA)
Excel VBAでワードを起動してエクセルの表をワードに貼付け(Excel VBA)
Excel VBAでワードを起動して エクセルのエクセルの表を図としてワードに貼付け(Excel VBA)
Word コピー貼付けした図が白い枠だけ?図が表示されない現象を解決
Excel VBAでワードを起動して グラフをワードに図として貼付け(Excel VBA)
Excel VBAでワードを起動して 複数のグラフをワードに図として貼付け(Excel VBA)
エクセル VBA グラフにタイトルを追加する(Excel VBA)
エクセル VBA グラフのタイトルテキストを取得する(Excel VBA)
エクセル VBA グラフに凡例を追加する(Excel VBA)