Макросы в диаграммах. Упражнение 16. «Анализ функции». Задание. Построить график квадратной функции. Разместить на листе линейки прокрутки, управляющие значениями коэффициентов а, в, с.
Порядок выполнения.
В ячейку А1 внести заголовок: Таблица значений функции у=ах2+вх+с.
В ячейку А3 внести имя аргумента: х.
В А4 имя функции: у.
В В23 внести имя коэффициента : а.
В в О23 значение коэффициента а : -4.
В В25 имя коэффициента - в, а в ячейку О25 его значение -70.
В В27 имя коэффициента - с, а в ячейку О27 его значение -662.
Заполнить В3:N3 значениями аргумента от -12 до 12 шагом 2.
Заполнить В4:N4 значениями функции и построить график (как в лр.1).
Выделить ось Х графика , щёлкнуть правой клавишей мыши, выбрать «формат оси», закладку «шкала» и перенести ось У в категорию 7.
Аналогично войти в формат оси У, закладку «шкала» и настроить шкалу как на рис.64.
Рис. 64
Вызвать панель управления Visual Basic (Вид- панели инструментов – Панель управления). Задать режим конструктора, щёлкнув по треугольнику на панели управления.
Из набора инструментов панели управления выбрать «полосу прокрутки» и растянуть прямоугольник в области С23:N23. Не снимая выделения с появившейся полосы прокрутки, щёлкнуть по кнопке «свойства» панели управления и настроить свойства нового объекта:
Полоса прокрутки для а
Name-Scra MIN- -10 MAX- 10 Value - -4
Аналогично разместить ещё две полосы прокрутки, настроив их следующим образом:
Полоса прокрутки для в
Name – ScrB MIN- -100 MAX- 100 Value- -70
Полоса прокрутки для с
Name- ScrC MIN—1000 MAX- 1000 Value- -662
В результате на листе будут размещены объекты как на рис. 65.
Рис. 65
Щелкнуть два раза отрывисто по ScrA. При этом откроется процедура обработки события изменения положения бегунка полосы прокрутки коэффициента «а» ScrA_Change. Внести следующий код, связывающий значение в ячейке А23 и положение бегунка.
Private Sub scra_Change() Range("O23").Value = scra.Value End Sub
Повторить этот код в процедуре Scroll. Это рекомендуется делать для того, чтобы значения в ячейке А23 менялись не рывком, а плавно.
Private Sub scra_Scroll() Range("O23").Value = scra.Value End Sub
Повторить эти действия для двух других линеек прокрутки.
Private Sub scrb_Change() Range("O25").Value = scrb.Value End Sub Private Sub scrb_Scroll() Range("O25").Value = scrb.Value End Sub Private Sub scrc_Change() Range("O27").Value = scrc.Value End Sub Private Sub scrc_Scroll() Range("O27").Value = scrc.Value End Sub
Закончить режим конструктора, щёлкнув по треугольнику на панели управления, изменить положение бегунков и убедиться, что связь линеек с функцией работает. При изменении положения бегунка «а» график изменяет направление ветвей, при изменении положения бегунка «в» график перемещается по горизонтали, при изменении «с» график перемещается по вертикали.
Упражнение 17. «Звёзды». Задание. Создать точечный график. Фоном графика задать рисунок с изображением звездного неба (заранее разместить на жестком диске). Настроить вид точек графика как большие жёлтые круги – звёзды. Написать код, при котором изменяются положения точек:
При щелчке по кнопке «Мерцание» звёзды случайным образом появляются и гаснут
по щелчку по кнопке «звездопад» звёзды движутся в сторону Земли.
При щелчке по кнопке «Конец» всё останавливается.
Рис 66
Порядок выполнения.
Заполнить область A1:F2 первичными данными в соответствии с рис. 66.
Создать в ячейке А3 формулу =А2+0,5 и протянуть маркёром заполнения до С3.
Создать в ячейке D3 формулу = D2-1 и протянуть маркёром заполнения до F3.
Выделить область А2:F2 и вызвать мастер диаграмм. Заказать точечную диаграмму.
В процессе построения диаграммы выбрать закладку «Ряд», определить область значений по оси Х - А2:С2, а область значений по оси У - D2:F2. Затем можно щёлкнуть по кнопке ГОТОВО. Получится график как на рис. 67.
Рис. 67
Для осей Х и У произвести следующие настройки:
Убрать галочки с «авто», т.е. сделать фиксированные шкалы осей.
Значение мин=0, макс=40.
Убрать метки делений (закладка «Вид»).
Для «Формата области построения» заказать рисунок звёздного неба, например Star.jpg, предварительно расположенный на жестком диске.
Выделить любую точку диаграммы, щёлкнуть правой кнопкой мыши и выбрать «Формат рядов данных». Настроить вид точки так, чтобы она выглядела типа жёлтой звёздочки. Размер маркёра задать 10.
Удалить надпись Ряд 1.
Указать левой кнопкой мыши на линии сетки , затем щёлкнуть правой и выбрать «Очистить». В результате пропадут линии сетки.
На листе EXCEL Вызвать панель инструментов «Элементы управления». Задать Режим конструктора. Разместить рядом с диаграммой три кнопки. Настроить свойства каждой кнопки следующим образом (табл. 25 ):
Таблица 25 №пп
| Свойство
| Значение
| 1
| Name
| CMDgo
|
| Caption
| Звездопад
| 2
| Name
| CMDstar
|
| Caption
| Мерцание
| 3
| Name
| CMDend
|
| Caption
| Конец
|
Щёлкнуть два раза отрывисто по кнопке «Звездопад», при этом откроется процедура описания кода события «Щёлчок по кнопке» CMDgo_Click, внести следующий код:
Private Sub CMDGo_Click()
Do Запускаем бесконечный цикл
For j = 1 To 6 Запускаем цикл заполнения исходных данных
ActiveSheet.Cells(2, j).Value = 40 * Rnd + 5 область А2:F2 заполняется случайными числами
Next в пределах от 5 до 45
Do Запускаем цикл движения звёзд
Range("A2:F2").Value = Range("A3:F3").Value С каждым шагом цикла координата по Х каждой точки графика изменяется на 0,5, а по У на -1.
t = Timer Цикл задержки на 0,1 сек
Do Оператор DoEvents означает «посмотри
DoEvents вокруг», используется для того, чтобы во время паузы все процессы продолжались
Loop While Timer - t < 0.1
Loop While Range("F2").Value > 0 Условие закрытия цикла движения - пока У3>0
Loop Закрываем бесконечный цикл End Sub
Щёлкнуть два раза отрывисто по кнопке «Мерцание» и внести следующий код, (он отличается от предыдущего только тем, что нет цикла движения и уменьшена область случайных чисел, но увеличен цикл задержки):
Private Sub CMDStar_Click() Do Запускаем бесконечный цикл
For j = 1 To 6 Заполняем исходные данные случайными числами
ActiveSheet.Cells(2, j).Value = 30 * Rnd + 5 заполняем область А2:F2 случайными числами от 5 до 35
Next Закрываем цикл заполнения
t = Timer Запускаем цикл задержки на 0,2 ек
Do
DoEvents
Loop While Timer - t < 0.2 Закрываем цикл задержки
Loop Закрываем бесконечный цикл End Sub
В процедуре кнопки «Конец» написать только одно слово «End», что означает останов всех процессов.
Private Sub cmdend_Click() End закончить программу End Sub
Закончить режим конструктора, убедиться в правильной работе кнопок. При щелчке по кнопке «Звездопад» точки начинают двигаться, при щелчке по кнопке «Мерцание» появляются и через некоторое время пропадают, при щелчке по кнопке «Конец» все останавливается.
Самостоятельная работа 21. Задание. Изменить код программы таким образом, чтобы звёзды мерцали чаще, а падали не слева направо, а справа налево.
|