「マクロ エクセル 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とは