Построить график vba excel

Обновлено: 07.07.2024

В Word 2007 с пакетом обновления 2 (SP2) или более поздней версии можно программными средствами осуществлять доступ к диаграммам с использованием объектной модели VBA в приложении Word. Объект диаграммы в Word создается посредством той же общей реализации слоя документа Office, которая используется в Excel, поэтому если вы знакомы с объектной моделью для создания диаграмм в Excel, то можете легко перенести VBA-код Excel, осуществляющий операции с диаграммой, в VBA-код Word.

Использование объекта Chart

В Word диаграмма представлена объектом Chart. Объект Chart содержится inlineShape или Shape. Вы можете использовать коллекцию InlineShapes или коллекцию Форм объекта Document для добавления новых или доступа к существующим диаграммам. Для добавления новой диаграммы используется метод AddChart для обеих коллекций с указанием типа диаграммы и расположения в документе.

Свойство HasChart можно использовать для определения, содержит ли объект InlineShape или объект Shape диаграмму. Если HasChart возвращает True, вы можете использовать свойство Chart, чтобы получить ссылку на объект Chart, который представляет диаграмму. На данном этапе реализация практически идентична реализации кода Excel и кода VBA, которые могут передаваться между двумя программами в большинстве случаев.

Например, в следующем примере кода VBA в активную таблицу в Excel добавляется новая двухдюймовая диаграмма столбцов и задает исходные данные диаграммы в диапазон A1:C3 из листа Sheet1.

Для сравнения, в следующем примере кода VBA добавляется новая двухдюймовая диаграмма столбцов к активному документу и задает исходные данные диаграммы в диапазон A1:C3 из данных диаграммы, связанных с диаграммой.

Основные различия между объектом Chart в Word и объектом ChartObject в Excel

Несмотря на то, что работа с диаграммами между Excel и Word практически идентична в большинстве случаев, полезно определить важные области, в которых эти две реализации отличаются:

Для программного создания или манипулирования объектом ChartData в Word требуется Excel запуска.

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

Свойства и методы, которые в Excel обычно принимают ссылку на объект Range, теперь принимают адрес диапазона в Word. Объект Range в Word отличается от объекта Range в Excel. Чтобы предотвратить путаницу, объектная модель диаграммы в Word принимает строки адресов диапазона, такие как "='Sheet1'!$A$1:$D$5", в этих свойствах и методах (например, метод SetSourceData объекта Chart), которые принимают объекты Range в Excel.

Новый объект ChartDataбыл добавлен в объектные модели VBA для Word, чтобы предоставить доступ к связанным или встроенным данным для диаграммы. На каждой диаграмме, связанной с ней, есть данные, используемые для нарисовки диаграммы в Word. Данные диаграммы можно связывать с внешней Excel или встраить как часть самой диаграммы. Объект ChartData инкапсулирует доступ к данным для заданной диаграммы в Word. Например, в следующем примере кода VBA отображаются и минимизируются данные диаграммы для каждой диаграммы, содержались активным документом в Word.

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

Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.

Диаграммы можно размещать на рабочем листе. Для этого используется коллекция chartobjects. Ее элементы - объекты класса chartobject - являются контейнерами, содержащими объект Chart, задающий непосредственно диаграмму.

Рассмотрим основные методы, определяющие новое поведение объекта Chart:

SubChartWizard ([Source], [Gallery], [Format], [PlotBy], [CategoryLabels], [SeriesLabels], [HasLegend], [Title], [CategoryTitle], [ValueTitle], [Extra-Title])

Этот метод позволяет построить или модифицировать существующую диаграмму. В отличие от мастера диаграмм (ChartWizard), который вызывается при построении диаграммы вручную, метод не является интерактивным, более того, он не позволяет задать все возможные свойства. С его помощью можно выполнить основную работу, а детали строятся с использованием других свойств и методов объекта Chart. Все параметры метода являются необязательными:

  • Source - объект Range, содержащий исходные данные для построения новой диаграммы. Если параметр опущен, то метод позволяет отредактировать существующую диаграмму - либо выделенную диаграмму рабочего листа, либо диаграмму активного листа диаграмм;
  • Gallery - задает тип диаграммы и может быть одной из следующих констант: xlArea, xlBar, xlColumn, xlLine, xlPie, xlRadar, xlXY-Scatter, xlCombination, xl3DArea, xl3DBar, xl3DColumn, xl3DLine, xl3DPie, xl3DSurface, xlDoughnut, или xlDefaultAutoFormat;
  • Format - задает формат для данного типа диаграммы. Каждому типу диаграммы соответствует некоторое число возможных форматов. Параметр задает номер формата, по умолчанию выбирается первый формат данного типа;
  • PlotBy - соответствует терминальному свойству PlotBy;
  • CategoryLabels и SeriesLabels - целые, указывающие число строк или столбцов с метками категорий и рядов данных в области, заданной параметром Source. Указывать эти числа нужно на единицу меньше фактического значения;
  • остальные параметры позволяют добавить легенду, задать название диаграммы и ее осей - они совпадают с соответствующими терминальными свойствами.

Sub SetSourceData (source as range, [plotby]). Устанавливает источник данных диаграммы. Второй параметр соответствует терминальному свойству plotby.

SubApplyCustomType (ChartTypeAsXlChartType, [typename]). Метод позволяет модифицировать диаграмму, применив к ней новый тип - стандартный или настраиваемый. Если этот тип стандартный, то тогда первый параметр полностью его определяет. Его возможные значения совпадают со значениями соответствующего терминального свойства charttype. Если же тип настраиваемый, то первый параметр должен иметь одно из следующих значений: xlbuiltin, xluserdefined или xlanygallery. В этом случае второй параметр задает имя типа диаграммы.

Function Export (filename as string, [filtername], [interactive]) as boolean позволяет экспортировать диаграмму, преобразуя ее в графический формат. Первый параметр задает имя файла, в который будет записана диаграмма в графическом формате, второй - задает имя графического фильтра в том виде, как оно записано в системном регистре. Булев параметр interactive должен иметь значение true, если мы хотим вызвать диалоговое окно в процессе фильтрации. Функция export возвращает значение true в случае успешного завершения работы.

Sub GetChartElement (x as long, y as long, elementid as long, argl as long, arg2 as long). Представьте себе, что пользователь щелкнул кнопку мыши где-то над диаграммой. Обработав это событие, можно получить координаты курсора мыши - x и y. Если теперь вызвать метод getchartelement с этими координатами, то он вернет значение параметра elementid - идентификатор элемента диаграммы и значения двух параметров, связанных с этим элементом. Конечно, параметры зависят от типа того элемента, чьи координаты x и y заданы.

Function Location (where as xlchartlocation, [name]) as Chart. Передвигает диаграмму в новое местоположение. Параметр Where имеет следующие значения: xlLocationAsNewSheet, xlLocationAsObject или xlLocationAutomatic.

В первом случае диаграмма помещается на новый лист диаграммы и параметр Name задает имя этого листа. Во втором случае диаграмма помещается как встроенный объект и Name задает имя рабочего листа.

Создание VBA программы

По введенным в диалоговое окно «Построение графика» начальным, конечным значениям аргументов и их шагам изменения строится график. Уравнение графика также вводится в программу из диалогового окна. Уравнение должно быть составлено в соответствии с правилами, по которым строятся функции рабочего листа, но в качестве аргументов в нем следует использовать х вместо ссылки на ячейку. Программа сама переведет аргумент в ссылку на ячейку. После табуляции введенной функции программой и построения поверхности на рабочем листе этот график также отображается в объекте управления Image, расположенном в диалоговом окне Построение графика.

Обсудим, как приведенная ниже программа решает описанную задачу и что происходит в ней.

Диалоговое окно «Построение графика» в рабочем состоянии

Результат построения графика на рабочем листе

  • Активизирует диалоговое окно.
  • Назначает клавише <Esc> функцию кнопки Отмена, а клавише <Enter> - построение.
  • Устанавливает, чтобы отображаемая картинка графика в диалоговом окне помещалась целиком и пропорционально в пределах элемента управления Image, а также чтобы левый верхний угол рисунка совпадал с левым верхним углом элемента управления Image.

Нажатие кнопки Построение запускает на выполнение процедуру CommandButton 1__ C 1 ick

Нажатие кнопки Отмена запускает на выполнение процедуру CommandButton 2_ C 1 ick

Закрывает диалоговое окно.

Рассмотрим листинг данного приложения.

Private Sub CommandButton1_Click()

// Процедура табуляции функции

Dim х_нз As Double

Dim х_пз As Double

Dim х_шаг As Double

Dim УрГрафика As String

Dim nx As Integer

// nx - число протабулированных значений аргумента х

Dim n As Integer

Dim i As Integer

// n, i - вспомогательные целые переменные

// Проверка корректности ввода данных

If IsNumeric(TextBox2.Text)=False Then

MsgBox «Ошибка в начальном значении х», vbInformation, «График»

If IsNumeric(TextBox3.Text)=False Then

MsgBox «Ошибка в шаге х», vbInformation, «График»

If IsNumeric(TextBox4.Text)=False Then

MsgBox «Ошибка в конечном значении у», vbInformation, «График»

// Считывание с диалогового окна значений переменных

// Проверка согласованности введенных данных

If х_нз >= х_пз Then

MsgBox «Начальное значение х слишком большое», vbInformation, «График»

If х_нз + х_шаг >= х_пз Then

MsgBox «Шаг х великоват», vbInformation, «График»

// Замена в введенной формуле аргумента х на ссылку $A1

// Замена в введенной формуле аргумента х на ссылку $A1

If Mid(УрГрафика, i, 1)=«x» Or Mid(УрГрафика, i, 1)=«X» Then

If (1 < i) And (i < n) Then

УрГрафика=Left(УрГрафика, i - 1) & «$A1» & Right(УрГрафика, n - i)

УрГрафика=«$A1» & Right(УрГрафика, n - 1)

УрГрафика=Left(УрГрафика, n - 1) & «$A1»

Loop While i <= Len(УрГрафика)

// Очистка на активном листе ранее введенных данных

// Заполнение диапазонов значениями аргумента

Range(«A1»).Value=х_нз 'Ввод в ячейку A1 начального значения

// Создание арифметической прогрессии по столбцу с указанным шагом и начальным значением

Range(«A1»).DataSeries Rowcol:=xlColumns, Type:=xlLinear, Step:=х_шаг, Stop:=х_пз, Trend:=False

// Заполнение диапазона значениями функции

// Определение числа строк в диапазоне заполнения

// Ввод уравнения поверхности в ячейку B1

If IsError(Evaluate(УрГрафика))=True Then

MsgBox «Ошибка в формуле», vbExclamation, «График»

// Заполнение диапазона Range(Cells(1, 2), Cells(nx, 2))

// начиная с ячейки B1, что эквивалентно протаскиванию маркера

// заполнения ячейки B 1 на диапазон Range (Cells (1, 2),

Range(«B1»).AutoFill Destination:=Range(Cells(1, 2), Cells(nx, 2)), Type:=xlFillDefault

// Удаление с рабочего листа всех ранее построенных диаграмм

ActiveSheet.Range(Cells(1, 2), Cells(nx, 2)).Select

// Выбор диапазона, по которому строится график

// Задание и выбор области на рабочем листе, где будет построен график,

// размер графика должен соответствовать размеру объекта Image 1

ActiveChart.ChartWizard Source:=Range(Cells(1, 1), Cells(nx, 2)), Gallery:=xlLine, Format:=2, PlotBy:=xlColumns, CategoryLabels:=1, SeriesLabels:=0, HasLegend:=False, Title:="График",

CategoryTitle:="Аргумент", ValueTitle:="Функция y" & TextBox1.Text

// Запись диаграммы в файл и загрузка картинки в Image1

Private Sub CommandButton2 Click()

// Процедура закрытия диалогового окна

Private Sub UserForm Initialize()

// Рисунок масштабируется с учетом относительных размеров так, чтобы он помещался в объекте Image1


Визуализация очень важна в любых данных. В Excel, когда мы представляем данные в виде таблиц и сводной таблицы, другому пользователю может быть трудно понять основной сценарий из данных. Таким образом, в Excel у нас есть графики для представления наших данных. Диаграммы - это визуальное представление данных, представленных в строках и столбцах таблицы Excel. Теперь мы все знаем, как вставить диаграмму в таблицу Excel. В этой теме мы узнаем об использовании диаграмм в VBA. Это так же просто, как мы используем графики в Excel. Теперь, как на рабочем листе, где у нас есть различные типы графиков, аналогично, у нас есть все графики в VBA также в виде объекта. Все, что нам нужно сделать, это вызвать этот объект, чтобы использовать его. Мы можем создавать диаграммы из VBA на одном листе или на отдельном листе. Однако наиболее целесообразно использовать диаграммы на отдельном листе, чтобы избежать путаницы.

Каковы графики в VBA? Графики - это простые объекты в VBA. Мы можем сделать два типа диаграмм в VBA. Один из них известен как лист диаграммы, а другой - как встроенные диаграммы. На листе диаграммы VBA создает новый лист для диаграммы. Мы даем справочные данные, которые являются другим рабочим листом в качестве исходных данных. Теперь встроенные диаграммы - это те диаграммы, которые присутствуют в одном листе данных. Теперь кодирование для этих двух типов диаграмм немного отличается друг от друга, которое мы изучим в этой теме. Чтобы использовать свойства диаграммы в VBA, мы используем символ точки (.) В качестве IntelliSense. Теперь нам нужно помнить одну вещь: в Excel существуют различные типы графиков. Если мы не предоставляем тип диаграммы для нашего кода, VBA автоматически создает столбчатую диаграмму для нас по умолчанию. Очевидно, мы можем изменить это несколькими строками кода.

Как создать диаграммы в Excel VBA?

Теперь давайте научимся создавать диаграммы в Excel VBA на нескольких примерах.

Вы можете скачать этот шаблон VBA Charts Excel здесь - Шаблон VBA Charts Excel

Для всех примеров мы рассмотрим одну информацию, которая представлена ​​на листе 1 следующим образом:


Excel VBA Charts - Пример № 1

Во-первых, давайте узнаем, как вставить диаграмму в VBA, для этого выполните следующие шаги:

Шаг 1: Начните с подпроцедуры следующим образом.

Код:


Шаг 2: Объявите одну переменную как объект диаграммы.

Код:


Шаг 3: Чтобы использовать графики, нам нужно вызвать метод add, как показано ниже.

Код:


Шаг 4. Чтобы использовать свойства объекта диаграммы, вставьте оператор With в код, как показано ниже.

Код:


Шаг 5: Теперь давайте предоставим источник для этой диаграммы, начнем с точечного оператора, и он даст нам дополнительные возможности. Введите следующий код ниже, чтобы ввести источник для диаграммы.

Код:


Шаг 6: Теперь запомните, что мы не предоставили никакой тип диаграммы, сначала давайте запустим приведенный выше код, нажав клавишу F5, и посмотрим, какой тип диаграммы будет вставлен.


У нас есть новый лист, который называется «Диаграмма», и в нем есть наш график.

Шаг 7: Теперь давайте дадим коду тип диаграммы, которую мы хотим использовать для этого представления,


Шаг 8: Давайте выберем трехмерную область для этого примера, как показано ниже,

Код:


Шаг 9: Запустите код, нажав клавишу F5 или нажав кнопку «Воспроизвести» и проверьте тип диаграммы на рабочем листе.


Теперь помните, что каждый раз, когда мы запускаем код, он создает новый лист диаграммы для нас. Это также называется листом диаграммы, потому что он создает диаграммы на другом листе.

Excel VBA Charts - Пример № 2

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

Шаг 1: В том же модуле запустите еще одну подпроцедуру следующим образом.


Шаг 2: Снова объявите переменную как тип диаграммы следующим образом.

Код:


Шаг 3: Разница во встроенных диаграммах заключается в том, что мы ссылаемся на рабочий лист с данными в качестве активного листа с помощью следующего кода, показанного ниже.

Код:


Шаг 4: Теперь остальная часть создания и проектирования диаграмм схожа, мы снова добавили оператор With в код следующим образом.

Код:


Шаг 5: Позвольте нам указать место, где будет находиться наша диаграмма, поскольку мы не хотим, чтобы она находилась над нашими данными, поэтому перед С помощью Statement добавьте следующий код туда, где мы установили нашу диаграмму, следующим образом.

Код:


Шаг 6: Теперь давайте предоставим источник данных и тип диаграммы, которые мы хотим видеть следующим образом.

Код:


Шаг 7: Запустите код, нажав клавишу F5 или нажав кнопку «Воспроизвести» и посмотрите результат на нашем листе, где данные следующие.


Это называется встроенной диаграммой, поскольку диаграмма находится на том же листе, что и данные.

Excel VBA Charts - Пример № 3

Существует также другой способ создания диаграмм в наших таблицах с использованием VBA. Этот метод известен как метод ChartsObject.

Шаг 1: В том же модуле давайте начнем с третьей подпроцедуры следующим образом.

Код:


Шаг 2: Конус как лист данных, другой тип как диапазон и один как объект диаграммы, как показано ниже.

Код:


Шаг 3: Сначала установите на листе, где находятся данные, в данном случае это лист 1.

Код:


Шаг 4: Теперь выберите диапазон данных у нас следующим образом.

Код:


Шаг 5: Теперь установите объект диаграммы, чтобы добавить диаграмму, используя свойство объекта диаграммы следующим образом.

Код:


Шаг 6: Теперь давайте приведем источник диаграммы следующим образом.

Код:


Шаг 7: Теперь выберите желаемый тип диаграммы следующим образом.

Код:


Шаг 8: Запустите код, нажав клавишу F5 или нажав кнопку «Воспроизвести» и посмотрите результат на листе 1.


То, что нужно запомнить

  • Мы можем решить, какой тип диаграмм мы хотим использовать, установив тип диаграммы.
  • В типе диаграммы - количество раз, когда мы запускаем код, новый лист создается под уникальным именем диаграммы с диаграммой внутри.
  • Объект Chart также является членом листов, в которых есть как диаграммы, так и листы.
  • Чтобы использовать объект диаграммы, нам нужно использовать инструкцию SET, чтобы сначала установить диаграмму.

Рекомендуемые статьи

Это руководство к диаграммам VBA. Здесь мы обсудим, как создавать диаграммы в Excel с использованием кода VBA, а также с практическими примерами и загружаемым шаблоном Excel. Вы также можете просмотреть наши другие предлагаемые статьи -

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

В Excel различаются два вида диаграмм: внедренная на рабочий лист и созданная на специальном листе для диаграмм. Итак, семейство sheets (листы) включает в себя семейства: worksheets (рабочие листы) и charts (листы диаграмм). Объектами семейства charts являются листы диаграмм, но это семейство не включает в себя диаграммы, непосредственно встроенные в рабочие листы. Такие диаграммы принадлежат семейству chartobjects. Таким образом, объект ChartObject встроен В Объект Worksheet, a Chart — В workbook. Иерархия этих объектов показана на рис. 5.1. Свойства и методы этих объектов в основном аналогичны.

Рис. 5.1. Иерархия объектов Chart и ChartObject

Свойства объекта Chart

Перечислим основные свойства объекта chart и семейства charts.

Возвращает объект ChartArea — область на листе, отведенная под диаграмму. В следующем примере устанавливается цвет элементов объекта ChartArea.

Возвращает объект PlotArea — часть области ChartArea, отведенная непосредственно под диаграмму. В следующем примере устанавливается Цвет объекта PlotArea:

Charts (1) . PlotArea . Interior . Colorlndex = 8

Возвращает объект ChartTitle, являющийся заголовком диаграммы. В следующем примере задается заголовок диаграммы отчет :

With Charts ( "Отчет")

. Text = "Продажи за май"

Возвращает тип диаграммы:

xlArea, xlBar,xlColumn, xlLine, xlPie, xlRadar, xlXYScatter, xlCombination, xl3DArea, xlSDBar, xl3DColumn, xl3DLine, xl3DPie, xlSDSurface, xlDoughnut

Возвращает объект Legend. Используется для изменения легенды. Например:

Возвращает угол поворота 3-мерной диаграммы вокруг z-оси. Допустимыми являются значения от 0° до 360°. По умолчанию принимается угол, равный 20°

Возвращает угол возвышения для обзора трехмерной диаграммы. Допустимыми являются значения от —90° до 90°. По умолчанию принимается угол, равный 15°

Допустимые значения: xlCoiumns (столбцы используются как ряды данных при построении диаграммы), xlRows (строки используются как ряды данных при построении диаграммы)

Допустимые значения: True (диаграмма строится только по видимым ячейкам), False (в противном случае)

Floor, Corners, Walls

Возвращают соответственно объекты Floor, Corners, walls, используемые при построении трехмерных диаграмм. При отображении таких диаграмм для создания иллюзии трехмерности диаграмма отображается на фоне открытого куба, основание которого задается объектом Floor, углы — Corners, а две боковые стенки — wails. В следующем примере устанавливаются цвета объектов Floor и walls и выбирается объект corners:

With Charts (1) .. Floor . Interior . Colorlndex = 5 .Walls. Border. Colorlndex = 3 /Corners . Select End With

Допустимые значения: True (трехмерная диаграмма автоматически масштабируется так, чтобы по размеру совпадать с двумерной), False (диаграмма не масштабируется)

DepthPercent, Height Per cent

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

xlNotPiotted (при построении диаграммы пустые ячейки игнорируются) xlInterpoiated (значения в пустых ячейках интерполируются)
xlZero (значения в пустых ячейках считаются равными нулю)

Protect Contents, ProtectData, ProtectDrawingObjects, Protect Formatting, ProtectGoalSeek, Protect ionMode, ProtectionSelection,

Возвращает True, если указанный элемент диаграммы имеет защиту, и False — в противном случае

HasAxis, HasDAtaTable, HasLegend, HasTitle

Возвращает True, если указанный элемент имеется на диаграмме, и False — в противном случае

Методы объекта Chart

В данном разделе перечислены основные методы объекта chart.

Метод chartwizard применяется для построения и изменения существующей диаграммы. С помощью метода chartwizard, в отличие от команды Мастер диаграмм (ChartWizard), используемой для построения диаграммы вручную, нельзя задать все возможные свойства диаграммы. Он позволяет выполнить основную работу, а детали строятся с привлечением других свойств и методов объекта chart.

Читайте также: