Изменить шрифт диаграммы с помощью VBA

Как изменить шрифт диаграммы Excel с помощью VBA?

Если я вручную выберу диаграмму и запишу макрос, пока я вручную изменяю имя и размер шрифта, я получаю макрос, показанный ниже. Но когда я немедленно воспроизводю макрос, он выдает ошибку времени выполнения: «Указанное значение выходит за пределы допустимого диапазона». Так что, похоже, в регистраторе макросов есть ошибка. Это означает, что я не могу разобраться в коде для изменения шрифта самостоятельно.

Sub Macro6()
'
' Macro6 Macro
'

'
    With ActiveSheet.Shapes("Chart 1").TextFrame2.TextRange.Font
        .NameComplexScript = "Verdana"
        .NameFarEast = "Verdana"
        .Name = "Verdana"
    End With
    ActiveSheet.Shapes("Chart 1").TextFrame2.TextRange.Font.Size = 14
End Sub

введите описание изображения здесь

Я знаю, что в качестве альтернативы я мог бы изменить шрифт каждого отдельного элемента по одному (заголовок, заголовки осей, оси, ...), но это утомительно и оставляет возможность забыть некоторые элементы (метки точек серии, уравнения линии тренда, ...).

Я хочу изменить шрифт диаграммы по умолчанию, чтобы все ее элементы имели этот шрифт.


person Jean-François Corbett    schedule 30.04.2015    source источник


Ответы (3)


Действительно, это странная ошибка ... Сделал то же самое, но я перешел в Обозреватель объектов (F2) с целью поработать с Chart, а не с Shape.

После некоторых попыток я заставил это работать:

With ActiveSheet.ChartObjects("Graph").Chart.ChartArea.Format.TextFrame2.TextRange.Font
    .Name = "Verdana"
    .Size = 14
End With

Это довольно просто, я пробовал более любопытные вещи (поскольку в классе TextRange2 есть свойство .Count)

Он работает нормально, и действительно меняет шрифт всей диаграммы,
вам просто нужно знать название вашего графика.

Или убедитесь, что диаграмма выбрана, и используйте ActiveChart вместо ActiveSheet.ChartObjects("Graph").Chart.

person R3uK    schedule 30.04.2015
comment
Просто подойду поздно, чтобы поблагодарить и упомянуть, что если вы получите ссылку на свойство фигуры .Chart в PowerPoint, то .ChartArea.Format и т. Д. Позволит вам получить доступ к свойствам шрифта диаграммы и там. Весьма признателен. - person Steve Rindsberg; 28.01.2016

Самый простой способ:

ActiveChart.ChartArea.Font.Name = "Verdana"
person Jon Peltier    schedule 22.05.2015
comment
Это просто и работает, но почему .Font не отображается в автозаполнении после ChartArea? Это не задокументированный член объекта ChartArea. Это довольно неудобно - и почему я и другие ответившие не видели этого! - person Jean-François Corbett; 22.05.2015
comment
Это использование не рекомендуется, поэтому IntelliSense его не показывает. Однако в обозревателе объектов, если вы щелкните правой кнопкой мыши и выберите «Показать скрытые элементы», вы увидите Font как член ChartArea. - person Jon Peltier; 24.05.2015
comment
Самый устаревший VBA никогда не исчезнет, ​​поскольку большая часть устаревшего кода, работающего в мире бизнеса, полагается на устаревшие команды. - person Jon Peltier; 24.05.2015

Это тоже было записано и работает у меня (пока выбрана диаграмма):

Sub Macro1()
    Selection.Format.TextFrame2.TextRange.Font.Size = 14
    With Selection.Format.TextFrame2.TextRange.Font
        .NameComplexScript = "Verdana"
        .NameFarEast = "Verdana"
        .Name = "Verdana"
    End With
End Sub

Не очень большая разница с вашим ошибочным кодом.

person EngJon    schedule 30.04.2015