Попробуйте, пожалуйста, такой подход:
If Chart.Chart.ChartArea.Format.TextFrame2.HasText Then
Chart.Chart.ChartArea.Format.TextFrame2.TextRange.Font.Size = 8
End If
Ваш Chart
- это объект, помогающий в итерации. Свойство Chart
- это то, что вам нужно. В такой ситуации рекомендуется избегать использования переменной Chart
. Например, лучше использовать Ch
, и в таком случае то, что я попытался подчеркнуть выше, будет легче переварить, я думаю / надеюсь ...
Приведенный выше фрагмент кода должен заменить ваш:
With Chart.ChartArea.Format.TextFrame2.TextRange.Font
.Size = 8
End With
и , пожалуйста, укажите Chart
переменную As ChartObject
вместо Chart
.
Кроме того, ваш код содержит диапазон, созданный на основе массива:
ActiveSheet.Shapes.Range(Array("Chart 11", "Chart 3", "Chart 4", "Chart 7", "Chart 8")).Select
'Selection.Copy
Для его использования не нужно выбирать, не нужно копировать ... После этого вы не нужно / использовать весь этот диапазон в вашем коде. Вы переходите между графиками этой активной формы. Есть ли у вас что-то еще для дальнейшего использования этой диаграммы из буфера обмена?
Поскольку я (сейчас) понял, что вы собираетесь использовать ее на более поздней стадии, ее можно использовать без выбора, например:
ActiveSheet.Shapes.Range(Array("Chart 11", "Chart 3", "Chart 4", "Chart 7", "Chart 8")).Copy