«Автоматизация документов Microsoft Office Excel,Word,Access»
Диаграммы Excel из VBA.
Привязка диапазона данных к диаграмме средствами VBA.
Понятно, что в ручном режиме задать диапазоны подписей по оси ОХ и значений целевой функции для диаграммы не составляет труда…
Щелчок правой клавишей мыши по диаграмме… Из контекстного меню выбираем «Выбрать данные» и получаем диалоговое окно «Выбор источника данных»…
Но эту, пусть не сложную операцию придется выполнять каждый раз, как только изменяется размер интервала или шаг вычисления функции…
Благодаря VBA можно перепоручить машине рассчитать размер массива (диапазона) данных и связать этот диапазон со свойствами диаграммы… Пусть пользователю останется только ввести данные на форму и щелкнуть по кнопке «Вывод на график»…
Задание:
На диаграмме, размещенной на листе Excel, отображать график одной из функций
(по выбору пользователя, используя радиокнопки)
- у=Sin(x) или
- у=х*Sin(x) или
- у=х*х*Sin(x) .
Параметры графика функции (начало диапазона, конец диапазона, шаг) пользователь задает на форме ввода параметров
Решение:
Из условия понятно, что первым делом нужно добавить в проект UserForm… Добавляем…
Визуальное проектирование формы каждый волен делать в соответствии со своими эстетическими пристрастиями…
Чтобы на выходе получались значения различных функций в зависимости от выбранной радиокнопки можно написать объединяющую функцию
Private Function myF(aX As Double) As Double
If Me.OptionButton1 Then
myF = Sin(aX)
ElseIf Me.OptionButton2 Then
myF = aX * Sin(aX)
Else 'If Me.OptionButton3 Then
myF = aX * aX * Sin(aX)
End If
End Function
Заполнение диапазона данных целесообразно начинать всегда с одной и той же ячейки, которая заранее определена константами (и желательно, скрыта от глаз пользователя) ...
Const rowNa As Integer = 2
Const colX As Integer = 100
Const colY As Integer = colX + 1
Заполнение диапазона производится в цикле (в обработчике события Click соответствующей командной кнопки)…
siz = (xk - x0) / h
For i = 0 To siz
Cells(rowNa + i, colX) = x0 + i * h
Cells(rowNa + i, colY) = myF(Cells(rowNa + i, colX))
Next i
Также и привязка заполненного диапазона к диаграмме производится в обработчике события Click соответствующей командной кнопки…
mySeries.Name = "Y(x)"
mySeries.XValues = "=" & Lname & "!R" & rowNa & "C" & colX & ":R" & rowNa + siz & "C" & colX
mySeries.Values = "=" & Lname & "!R" & rowNa & "C" & colY & ":R" & rowNa + siz & "C" & colY
Первая строка позволяет переопределить название серии (по вашему желанию).
Вторая строка – позволяет задать подписи данных (диапазон) для оси Х в диаграмме Excel.
Третья строка – позволяет задать собственно значения функции (диапазон) для оси Y.
Как видите, конец привязываемого диапазона определяется суммой переменных rowNa + siz, поэтому вне
зависимости от параметров пользователя (длины интервала и частоты шага) на графике будет показан весь
интервал (понятно, что с разной степенью подробности).
Логическая функция CheckData() возвращает True только при наличии всех допустимых (приемлемых)
значениях от пользователя и, кроме того, инициализирует значения переменных уровня модуля x0, xk, h, myChart, mySeries.
Скачать xlsm-файл… Привязка диапазона данных к диаграмме средствами VBA Excel
Тестируйте! Желающим предоставляется консультация по скайпу (по исходному коду и сам исходный код, конечно, тоже)... ,
Для читателей моих рассылок исходный код открыт...
Обращайтесь... Если ваш е-mail есть в моей подписной базе, то вышлю пароль бесплатно !
Это наиболее легкий вариант связи …
А ведь можно связывать любые виды диаграмм и данных ... И все что угодно. Включайте фантазию...
Принцип один: Все что делает человек по определенным правилам (алгоритму) можно запрограммировать и поручить машине… .
Другие примеры на тему «Автоматизация документов Microsoft Office Excel,Word,Access»
Поделиться в соц сетях: