グラフの大きさを設定するには、ChartObjectのWidthプロパティとHeightプロパティを設定します。
Sub Sample() With Range("B7:E15") ActiveSheet.ChartObjects("グラフ 1").Width = .Width ActiveSheet.ChartObjects("グラフ 1").Height = .Height End With End Sub
グラフの大きさは、WidthプロパティとHeightプロパティに数値を指定すればいいのですが、こちらも位置と同じように、数値で指定するというよりも、セル範囲どこどこにピタリと合わせるとか、別のグラフと同じ大きさに揃えるとか、そういう使い方の方が多いです。上記のマクロは、セル範囲B7:E15に合わせています。いずれにしても、WidthプロパティとHeightプロパティでしょう。
さて、Excel 2010でマクロ記録してみましょう。
Sub Macro() ActiveSheet.ChartObjects("グラフ 1").Activate ActiveSheet.Shapes("グラフ 1").ScaleWidth 0.8971965887, msoFalse, _ msoScaleFromTopLeft ActiveSheet.Shapes("グラフ 1").ScaleHeight 0.8804347826, msoFalse, _ msoScaleFromTopLeft End Sub
ScaleWidthメソッドとは、ヘルプによると
指定された倍率で図形の幅を拡大または縮小します
だそうです。まぁ、確かにグラフの大きさを変更しましたから、見方によっては「大きさを拡大縮小した」とも言えますけどね。まぁ、いいです。このへんのマクロ記録には期待してませんから。Excel 2003でマクロ記録すると、次のようなコードが生成されます。
Sub Macro() ActiveSheet.ChartObjects("グラフ 1").Activate ActiveChart.ChartArea.Select ActiveSheet.Shapes("グラフ 1").ScaleWidth 0.9, msoFalse, msoScaleFromTopLeft ActiveSheet.Shapes("グラフ 1").ScaleHeight 0.87, msoFalse, msoScaleFromTopLeft End Sub
へぇ、Excel 2007では長いコードが、行継続文字で分割されて記録されるようになったんですね。へぇ・・・
Excel 2003でマクロ記録した次のコードを、Excel 2007で実行してみます。
Sub Macro() ActiveSheet.ChartObjects("グラフ 1").Activate ActiveChart.ChartArea.Select ActiveSheet.Shapes("グラフ 1").ScaleWidth 0.9, msoFalse, msoScaleFromTopLeft ActiveSheet.Shapes("グラフ 1").ScaleHeight 0.87, msoFalse, msoScaleFromTopLeft End Sub
【Excel 2007での実行結果】
これも、普通に動きます。誰もこんなことしないでしょうけどね。あ、もちろん、WidthプロパティやHeightプロパティは、どちらも同じコードで動きます。