質問: Achart.Height 'エラー箇所 MsgBox "Width:" & Gwidth & "× Height:" & Gheight End Sub ``` ActiveSheet.Shapes("グラフ 1").Width とした場合には取れるのですが、この形ですとアクティブなグラフが設定できずに困っています。 ネットを探しても案外解決法がなかったので、解決法をご教授いただけないでしょうか。
回答: 解決済みでしたが、後にこの質問を参照された方のために補足させていただきます。 Excelのグラフには「埋め込みグラフ」と、「グラフシート」というものがあります。 「埋め込みグラフ」はワークシート上に描画オブジェクトとして貼り付けているものです。 「グラフシート」は1つのグラフを専用のシートにしたものです。 このどちらを対象とするかで取得の方法が異なります。 「埋め込みグラフ」:WorkSheet.ChartObjectsコレクションから取得 「グラフシート」:Application.Chartsコレクションから取得 (ActiveChartで取得する場合はどちらも取得できますが、当然ながら事前に対象のオブジェクトまたはグラフシートをActiveにしておく必要があります。) 今回は複数のグラフの幅や高さを設定したいということですので、「埋め込みグラフ」を対象とされているものと思います。 ちなみに「グラフシート」は名前の通り"シート"の一種ですので、Chart型にWidthというプロパティはありません。 今回の質問で「メソッドまたはメンバーが見つかりません」 と怒られているのはこの点だと思います。 以下、グラフ名でプロパティ参照・設定するコード例です。 ``` Sub Adjust_Graph_Size() ' ' Adjust_Graph_Size Macro ' ''埋め込みグラフ名の確認 'Dim i As Integer 'For i = 1 To ActiveSheet.ChartObjects.Count ' MsgBox ActiveSheet.ChartObjects(i).Name 'Next i ''グラフシート名の確認 'For i = 1 To Charts.Count ' MsgBox Charts(i).Name 'Next i Dim Achart As ChartObject Set Achart = ActiveSheet.ChartObjects("Chart 1") Dim Bchart As ChartObject Set Bchart = ActiveSheet.ChartObjects("Chart 2") Gwidth = Achart.Width 'エラー箇所 Gheight = Achart.Height 'エラー箇所 MsgBox "Width:" & Gwidth & "× Height:" & Gheight Bchart.Width = Gwidth Bchart.Height = Gheight End Sub ``` 参考までに。