Home » エクセルマクロ・Excel VBAの使い方 » グラフ・Chart » ActiveChart.Locationとは

動作検証バージョン:64bit Windows 10 Pro + 32bit Excelバージョン2104 ビルド13929.20296 Microsoft Store)

「マクロ エクセル activechart.location」
という検索キーワードでアクセスがありました。

Excelでグラフの移動をマクロ記録すると、
  ActiveChart.Location Where:=xlLocationAsNewSheet
といったExcel VBAのコードが自動的に作られます。

このコードについて調べていた方による検索です。

ActiveChartの意味

先頭の「ActiveChart」は、
  ActiveChart.Location Where:=xlLocationAsNewSheet
Excel VBAで上位のオブジェクト式を省略できる、グローバルメンバーのActiveChartプロパティです。

ActiveChartプロパティの戻り値は、オブジェクトブラウザーの詳細ペイン等で確認できるとおり、Chartオブジェクトです。

Chart.Locationの意味

ActiveChartプロパティがChartオブジェクトを返すのですから、つづく「.Location」はChartオブジェクトに用意されているLocationメソッドです。
  ActiveChart.Location Where:=xlLocationAsNewSheet

Chart.Locationオブジェクトには、どこに移動するかを示す引数を2つ指定できます。WhereとNameです。

引数Whereには移動先を定数で指定

引数Whereは必須で、XlChartLocation列挙型に定義されている定数を指定します。

上図のとおりXlChartLocation列挙型には3つの定数が定義されていますけれど、可読性の落ちるxlLocationAutomaticは使わず、xlLocationAsNewSheetまたはxlLocationAsObjectのいずれかを使うべきだと私は考えます。

引数Nameにはワークシート名を指定

引数Whereに新規シートへのグラフ移動を指示するxlLocationAsNewSheetを指定した場合、引数Nameは指定しません。

引数WhereにグラフをオブジェクトにするxlLocationAsObjectを指定した場合、引数Nameには存在しているワークシートの名前を指定します。

この引数Nameに指定するのは、あくまでもワークシートの名前です。

下図のように、オブジェクト名が「SH1」で、ワークシートの名前が「Sheet1」だったときに、

  ActiveChart.Location Where:=xlLocationAsObject, Name:="Sheet1"
ならば、Sheet1ワークシート上のグラフオブジェクトになります。

これをオブジェクト名を使って、
  ActiveChart.Location Where:=xlLocationAsObject, Name:="SH1"
とした場合には、「実行時エラー '1004': 'Location'メソッドは失敗しました。: '_Chart'オブジェクト」となります。

また、
  ActiveChart.Location Where:=xlLocationAsObject, Name:=SH1
とした場合には、「実行時エラー '5'; プロシージャの呼び出し、または引数が不正です。」となります。

String型のワークシートの名前を指定するよりも、移動先のWorksheetオブジェクトを指定するほうが、適切な仕様だと私は思いますが。

最終更新日時:2023-04-23 08:26

[スポンサードリンク]

Home » エクセルマクロ・Excel VBAの使い方 » グラフ・Chart » ActiveChart.Locationとは

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

検索


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

.