Home » エクセルマクロ・Excel VBAの使い方 » グラフ・Chart » グラフの位置をVBAでセルに合わせる

グラフの位置をVBAでセルに合わせる

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

「EXCEL グラフ マクロ 位置 セルに合わせる」
といった検索キーワードで、このサイト『インストラクターのネタ帳』へアクセスが時折あります。

アクティブなグラフを特定のセル位置に移動するサンプルマクロ

埋め込みグラフを1つ選択しておいてから以下のExcelマクロを実行してください。

Sub アクティブグラフの左上をB2セルに合わせる()
 Dim cho As ChartObject
 Set cho = ActiveChart.Parent
 cho.Top = Range("B2").Top
 cho.Left = Range("B2").Left
End Sub

選択していたアクティブなグラフの左上の位置が、B2セルの左上に移動します。

埋め込みグラフを入れる枠と言えるオブジェクトChartObjectオブジェクトには、埋め込みグラフの位置を指定するためのTopプロパティ・Leftプロパティが用意されています。

Excel.ChartObject.Top

Excel.ChartObject.Left

RangeオブジェクトのTopプロパティの値をChartObject.Topプロパティに代入すれば、グラフの上端がセルの上端と同じ位置に移動し、

Excel.Range.Top

RangeオブジェクトのLefgプロパティの値をChartObject.Leftプロパティに代入すれば、グラフの左端がセルの左端と同じ位置に移動します。

Excel.Range.Left

ActiveChart.ParentでChartObjectを取得

そのようなChratObjectオブジェクトを取得するために、上記のサンプルでは「ActiveChart.Parent」という式を使っています。

Dim cho As ChartObject
Set cho = ActiveChart.Parent

オブジェクト変数ではなくWith文を使ったサンプル

特に、グラフ関連のオブジェクトモデルに慣れていない間は、上記のようにオブジェクト変数を使うことをおすすめしますが、以下のようにWith文を使っても同様のコードを書けます。

 With ActiveChart.Parent
  .Top = Range("B2").Top
  .Left = Range("B2").Left
 End With

アクティブシートの全埋め込みグラフをセル位置に移動するサンプルマクロ

以下のExcelマクロを実行すると、アクティブシート上の全埋め込みグラフの左端が、それぞれのセルの左端位置にピッタリ移動します。

Sub アクティブシートの埋め込みグラフの左上をセルに合わせる()
 Dim cho As ChartObject
 For Each cho In ActiveSheet.ChartObjects
  cho.Top = cho.TopLeftCell.Top
  cho.Left = cho.TopLeftCell.Left
 Next
End Sub

ChartObject.TopLeftCellプロパティを使うと、ChartObjectオブジェクトの左端位置にあるセルを表すRangeオブジェクトを取得できます。

Excel.ChartObject.TopLeftCell

先ほどは、Excel VBAをお使いの方ならお馴染みの、グローバルメンバーのRangeプロパティを使って取得したRangeオブジェクトの、Topプロパティ・Leftプロパティを使っていましたが、

cho.Top = Range("B2").Top
cho.Left = Range("B2").Left

今度は、ChartObjectオブジェクトのTopLeftCellプロパティを使って取得したRangeオブジェクトの、Topプロパティ・Leftプロパティを使っています。

 cho.Top = cho.TopLeftCell.Top
 cho.Left = cho.TopLeftCell.Left

最終更新日時:2022-07-13 12:05

[スポンサードリンク]

Home » エクセルマクロ・Excel VBAの使い方 » グラフ・Chart » グラフの位置をVBAでセルに合わせる

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

検索


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

.