【VBA】エクセルのグラフサイズを変更する

エクセルVBAでよく使うコードの備忘録。エクセルワークシートのグラフのサイズを変更するコード。直接サイズを指定したり、倍率を指定して大きさを変更する方法について。

スポンサーリンク

ChartObjectのHeight・Widthプロパティ

エクセルのシート上にあるグラフはChartObjectにアクセスすることで取得できます。WorksheetオブジェクトのChartObjectsにグラフの名前を引数として与えてやれば、ChartObjectにアクセスできます(グラフの名前を確認する方法についてはこちらを参照)。

グラフのサイズを設定するには、ChartオブジェクトのHeight・Widthプロパティを利用すると便利です。Height・Widthプロパティではグラフの縦・横のサイズを直接指定することができます。

サンプルコード

(カッコに囲まれた部分([***])を自分のプログラムに合わせて変更してください)

下記のサンプルコードでは、ChartObjectに直接幅と高さを設定してサイズを調整しています。一番直感的な指定方法です。

グラフサイズの変更(幅・高さ指定)

Public Sub ChangeChartSize1()
    
    '--- グラフがあるシート名 ---'
    Dim wsName As String
    wsName = "[ワークシート名]"
    
    '--- ChatObjectの名前 ---'
    Dim chartName As String
    chartName = "[グラフ名]"
    
    '--- ChartObject ---'
    Dim chartObj As Object
    Set chartObj = ThisWorkbook.Worksheets(wsName).ChartObjects(chartName)
    
    '--- ChartObjectに縦・横のサイズを設定 ---'
    ThisWorkbook.Worksheets(wsName).ChartObjects(chartName).Height = [縦サイズ]
    ThisWorkbook.Worksheets(wsName).ChartObjects(chartName).Width = [横サイズ]
    
End Sub

直接サイズを指定するのではなく、倍率で変更したい場合は下記のようにします。やっていることはHeight・Widthプロパティに値を設定するという同じことですが、元のサイズに掛け目をかけてスケーリングしています。

グラフサイズの変更(倍率指定)

Public Sub ChangeChartSize2()
    
    '--- グラフがあるシート名 ---'
    Dim wsName As String
    wsName = "[ワークシート名]"
    
    '--- ChatObjectの名前 ---'
    Dim chartName As String
    chartName = "[グラフ名]"
    
    '--- ChartObject ---'
    Dim chartObj As Object
    Set chartObj = ThisWorkbook.Worksheets(wsName).ChartObjects(chartName)
    
    '--- 倍率 ---'
    Dim scaleFactor As String
    scaleFactor = [倍率]
    
    '--- ChartObjectに縦・横のサイズを設定 ---'
    chartObj.Height = scaleFactor * chartObj.Height
    chartObj.Width = scaleFactor * chartObj.Width
    
End Sub