グラフの位置を設定するには、ChartObjectのTopプロパティとLeftプロパティを設定します。
Sub Sample() With ActiveSheet.ChartObjects("グラフ 1") .Top = Range("B7").Top .Left = Range("B7").Left End With End Sub
一般的に、グラフの位置を何かに合わせるときは、座標を指定するよりも、どこのセルに合わせる・・・という使い方が多いです。上記のように、合わせたいセルのTopプロパティやLeftプロパティを、そのままChartObjectのプロパティに設定すると簡単です。
ちなみに、Excel 2010でマクロ記録すると
Sub Macro() ActiveSheet.ChartObjects("グラフ 1").Activate ActiveSheet.Shapes("グラフ 1").IncrementLeft -18.75 ActiveSheet.Shapes("グラフ 1").IncrementTop -9.75 End Sub
こんなコードが記録されました。IncrementLeftとかは、今の位置から見て、左方向にどんんだけ移動する、っていう命令です。まぁ、行った操作は確かにその通りなんですけど、これが記録されてもねぇ・・・って感じです。ついでに、同じ操作をExcel 2003でマクロ記録してみましょうか。
Sub Macro() ActiveSheet.ChartObjects("グラフ 1").Activate ActiveChart.ChartArea.Select ActiveSheet.Shapes("グラフ 1").IncrementLeft -18.75 ActiveSheet.Shapes("グラフ 1").IncrementTop -9.75 End Sub
似たようなものですね。
Sub Macro() ActiveSheet.ChartObjects("グラフ 1").Activate ActiveChart.ChartArea.Select ActiveSheet.Shapes("グラフ 1").IncrementLeft -18.75 ActiveSheet.Shapes("グラフ 1").IncrementTop -9.75 End Sub
【Excel 2007での実行結果】
これは、普通に動きますね。ただ、IncrementLeftやIncrementTopなんてのは使わず、素直にTopプロパティとLeftプロパティを使った方がいいでしょう。