Excel でグラフ内の凡例エントリに変更を加えたときの "実行時エラー 1004"

現象

LegendEntries メソッドを使用して Microsoft Excel グラフの凡例エントリを変更する Microsoft Visual Basic for Applications (VBA) マクロを実行すると、次のエラー メッセージが表示される場合があります。

実行時エラー '1004': アプリケーションまたはオブジェクト定義エラー

原因

この動作は、Excel グラフに凡例エントリを表示できる領域よりも多くの凡例エントリが Excel グラフに含まれている場合に発生します。 この動作が発生すると、Microsoft Excel によって凡例エントリが切り捨てられる可能性があります。

VBA マクロの LegendEntries メソッドは凡例に表示される内容 (この場合は切り捨てられた凡例エントリ) を使用するため、この記事の「現象」セクションに記載されているエラー メッセージは、Excel グラフに凡例エントリを表示できる領域よりも多くのエントリがある場合に発生します。

回避策

サンプル プログラムは例示のみを目的として提供されており、商品性、特定目的に対する適合性その他について明示であると黙示であるとを問わず、マイクロソフトは一切保証をするものではありません。 サンプル プログラムの利用者には、使用するプログラミング言語、およびプロシージャの作成とデバッグに使用されるツールに精通しているユーザーを想定しています。 Microsoft Support 担当者は、サンプル プログラムを利用してある特定のプロシージャの機能を説明することがありますが、改変して機能を追加したり、ユーザーの要望に応じてプロシージャを作成したりすることはありません。

利用可能なサポート オプションの詳細と、Microsoft に問い合わせる方法の詳細については、次の Microsoft Web サイトを参照してください。

https://support.microsoft.com

この動作を回避するには、VBA マクロがグラフの凡例に変更を加える前に、Excel グラフの凡例テキストのフォント サイズを小さくするマクロを作成し、グラフの凡例のフォント サイズを次のマクロの例のように復元します。

注:

このマクロを正しく実行するには、ワークシートに Excel グラフが必要です。

Sub ResizeLegendEntries()

With Worksheets("Sheet1").ChartObjects(1).Activate
      ' Store the current font size
      fntSZ = ActiveChart.Legend.Font.Size

'Temporarily change the font size.
      ActiveChart.Legend.Font.Size = 2

'Place your LegendEntries macro code here to make
         'the changes that you want to the chart legend.

' Restore the font size.
      ActiveChart.Legend.Font.Size = fntSZ
   End With

End Sub