"Ошибка времени выполнения 1004" при внесении изменений в записи условных обозначений на диаграмме в Excel

Симптомы

При запуске макроса Microsoft Visual Basic для приложений (VBA), использующего метод LegendEntries для внесения изменений в записи условных обозначений в диаграмме Microsoft Excel, может появиться следующее сообщение об ошибке:

Ошибка времени выполнения "1004": ошибка, определяемая приложением или объектом

Причина

Такое поведение возникает, когда диаграмма Excel содержит больше записей условных обозначений, чем доступно место для отображения записей условных обозначений на диаграмме Excel. При таком поведении Microsoft Excel может усечь записи условных обозначений.

Так как метод LegendEntries в макросе VBA использует то, что отображается для условных обозначений (в данном случае усеченных записей условных обозначений), сообщение об ошибке, указанное в разделе "Симптомы" этой статьи, возникает при наличии большего количества записей, чем доступно места для отображения записей условных обозначений на диаграмме Excel.

Обходной путь

Корпорация Майкрософт предлагает примеры программного кода только для иллюстрации и не предоставляет явных или подразумеваемых гарантий относительно их корректной работы в конкретных случаях и в пользовательских приложениях. Примеры в данной статье рассчитаны на пользователя, имеющего достаточный уровень знаний соответствующего языка программирования, а также необходимых средств разработки и отладки. Специалисты служб технической поддержки Майкрософт могут пояснить назначение тех или иных конструкций кода в конкретном примере, но модификация примеров и их адаптация к задачам разработчика не поддерживается.

Дополнительные сведения о доступных вариантах поддержки и способах обращения в корпорацию Майкрософт см. на следующем веб-сайте Майкрософт:

https://support.microsoft.com

Чтобы обойти это поведение, создайте макрос, который уменьшает размер шрифта текста условных обозначений диаграммы Excel, прежде чем макрос VBA внося изменения в условные обозначения диаграммы, а затем восстановите размер шрифта условных обозначений диаграммы, чтобы он был аналогичен следующему примеру макроса.

Примечание.

Для правильного выполнения этого макроса на листе должна быть диаграмма 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