Перейти к содержимому
Наше приложение «Дешевые авиабилеты» в AppGallery >>

VBA Excel. Программное создание графика (диаграммы)

    Программное создание графика (диаграммы) в VBA Excel с помощью метода Charts.Add на основе данных из диапазона ячеек на рабочем листе. Примеры.

    Метод Charts.Add

    В настоящее время на сайте разработчиков описывается метод Charts.Add2, который, очевидно, заменил метод Charts.Add. Тесты показали, что Charts.Add продолжает работать в новых версиях VBA Excel, поэтому в примерах используется именно он.

    Синтаксис

    Параметры

    Параметры методов Charts.Add и Charts.Add2:

    Параметр Описание
    Before Имя листа, перед которым добавляется новый лист с диаграммой. Необязательный параметр.
    After Имя листа, после которого добавляется новый лист с диаграммой. Необязательный параметр.
    Count Количество добавляемых листов с диаграммой. Значение по умолчанию – 1. Необязательный параметр.
    NewLayout Если NewLayout имеет значение True, диаграмма вставляется с использованием новых правил динамического форматирования (заголовок имеет значение «включено», а условные обозначения – только при наличии нескольких рядов). Необязательный параметр.

    Если параметры Before и After опущены, новый лист с диаграммой вставляется перед активным листом.

    Примеры

    Таблицы

    В качестве источников данных для примеров используются следующие таблицы:

    Исходные таблицы для создания диаграмм

    Пример 1

    Программное создание объекта Chart с типом графика по умолчанию и по исходным данным из диапазона «A2:B26»:

    Результат работы кода VBA Excel из первого примера:

    Объект Chart с типом графика по умолчанию

    Пример 2

    Программное создание объекта Chart с двумя линейными графиками по исходным данным из диапазона «A2:C26»:

    Результат работы кода VBA Excel из второго примера:

    Объект Chart с двумя линейными графиками (с маркерами)

    Пример 3

    Программное создание объекта Chart с круговой диаграммой, разделенной на сектора, по исходным данным из диапазона «E2:F7»:

    Результат работы кода VBA Excel из третьего примера:

    Объект Chart с круговой диаграммой

    Примечание

    В примерах использовались следующие методы и свойства объекта Chart:

    Компонент Описание
    Метод SetSourceData Задает диапазон исходных данных для диаграммы.
    Метод Location Перемещает диаграмму в заданное расположение (новый лист, существующий лист, элемент управления).
    Свойство ChartType Возвращает или задает тип диаграммы. Смотрите константы.
    Свойство ChartStyle Возвращает или задает стиль диаграммы. Значение нужного стиля можно узнать, записав макрос.

    Содержание рубрики VBA Excel по тематическим разделам со ссылками на все статьи.

    8 комментариев для “VBA Excel. Программное создание графика (диаграммы)”

    1. Александр

      Добрый день,
      а как изменять цвета элементов на графике, задавать подписи осей? особенно как указывать название категорий для осей и в легенду?

    2. Александр

      После того, как я создал объект Chart, как получить доступ к форматированию всех его элементов?
      Как с ним соотносится объект ChartFormat?

      1. Евгений

        Привет, Александр!
        Кое-что подскажу. Для диаграммы, созданной кодом Примера 2:

        Программно создать поле для названия вертикальной оси мне не удалось.

        1. Александр

          Спасибо! А если я вот создал график Charts.Add. Он автоматически вставился на отдельный лист, то я тогда как применяю метод Select? Диаграмма на отдельном листе тоже воспринимается как отдельный worksheet?

    3. Александр

      Собственно глобально у меня пока вопрос в том, как понимать встроенные графики и графики на отдельных листах? Это все объекты семейства Charts?
      Как обращаться к встроенным графикам? Лист1.ChartObjects(1).Select — тут я так понимаю, один график на листе. А если их много, как определить их название или номер? А если есть еще графики на отдельных листах?

      1. Евгений

        Диаграммы на отдельных листах — коллекция Charts, принадлежащая книге. Диаграммы на одном листе — коллекция ChartObjects, принадлежащая листу.

        Для диаграмм на одном листе:

        Для диаграмм на отдельных листах:

        1. Александр

          Да, понял, спасибо!
          теперь как-то прояснилось. Я застрял теперь на выводе значений на график и позиционированием цифр относительно столбика графика. Что это за свойства?

    4. Александр

      вот я сделал такой пример построения графика.

      В принципе все, работает. я только не понимаю, как задать категории на вертикальную ось и почему он сразу не подхватывает названия из первого столбца.

    Обсуждение закрыто.