Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

PDF_LABS / ЛР_7

.pdf
Скачиваний:
30
Добавлен:
29.03.2015
Размер:
1.02 Mб
Скачать

ЛР_7

Лабораторная работа №7

Реализация функций пользователя на VBA

Задание

1.Разработать пользовательские функции VBA для функций, использованных в лабораторной работе №6.

2.Создать таблицу значений функций, в которой для каждой из трёх функций выводится два столбца. В первом из столбцов используется реализация функции средствами программы Microsoft Excel, а во втором реализация этой же функции в среде VBA.

3.Сравнить результаты в парах столбцов и убедиться в их идентичности.

4.Для одной из функций создать кнопку, вызывающую выполнение процедуры табулирования одной из функций.

Пример выполнения лабораторной работы

1.Для реализации задания ЛР № 7 создаём новый лист в книге

Excel.

2.Копируем 4 первых строки документа ЛР № 6 и вставляем их на созданный перед этим лист.

3.В ячейке А1 изменим текст заголовка

Табулирование трех функций

на

Табулирование трех функций с использованием средств VBA

4.В 5-й строке формируем заголовок таблицы результатов

-в А5 вводим символ Х;

-в В5 вводим строку Y(X);

-в С5 вводим строку Yvba(X);

-в D5 вводим строку G(X);

-в E5 вводим строку Gvba(X);

-в F5 вводим строку Z(X);

-в E5 вводим строку Zvba(X);

5.Формируем столбец значений Х так же, как в ЛР_6.

6.В ячейку В6 вводим формулу для вычисления значения функции

Y(X).

=SIN($G$4*A6)/(A6+3)+$I$4*A6^2

ипротягиваем её по столбцу до ячейки В16.

1

Любимов Е.Б.

ЛР_7

7.В меню Microsoft Excel выбираем команду Разработчик и на ленте этой команды нажимаем кнопку Visual Basic. Это действие открывает окно Microsoft Visual Basic for Applications. В меню этого окна выбираем команду Insert.

Если до этого обращения в данной книге не создавались и не использовались пользовательские функции VBA, открывается меню, в котором, если активны три пункта (см. рис.7.1).

Рис. 7.1, Окно Microsoft Visual Basic for Applications при первом выборе команды Insert

8.Для продолжения работы и создания пользовательской функции, реализующей вычисления функции Y(X), следует сначала создать модуль - пространство, объект в котором можно будет записать текст функции. Выберем команду меню Module.

Рис. 7.2, Окно модуля, созданное при выполнении команды Insert ÆModule

2

Любимов Е.Б.

ЛР_7

9. В первую строку модуля введём инструкцию Visual Basic Option Explicit

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

10.Следующим шагом в меню окна Microsoft Visual Basic снова выбираем команду Insert. В открывающемся после создания модуля меню активны все команды. Выбираем команду

Procedure… Открывается окно Add Procedure.

Рис. 7.2. Окно Add Procedure

11.В поле Name: вводим имя первой создаваемой функции Y.

12.В группе Type выбираем переключатель Function и нажимаем кнопку ОК.

13.В окне модуля формируется заготовка текста функции

Public Function Y()

End Function

14.Используя эту заготовку, введём инструкции, необходимые для реализации функции (1).

Public Function Y(a As Double, b As Double, x As Double) As Double Y = Sin(a * x) / (x + 3) + b * x ^ 2

End Function

3

Любимов Е.Б.

ЛР_7

15.Вернёмся в окно программы Microsoft Excel и в ячейку С6 введём обращение к функции Y.

Для этого в строке формул нажмём кнопку Вставить функцию.

В окне Мастер функций - шаг 1 из 2 в списке Категория: выбираем категорию Определённые пользователем. В поле со списком Выберите функцию: выбираем функцию Y (см.

рис. 7.3).

Рис. 7.3. Окно мастера функций

16.Нажимаем кнопку ОК и открываем окно 2-го шага мастера функций (рис. 7.4).

Рис. 7.4. Окно 2-го шага мастера функций

4

Любимов Е.Б.

ЛР_7

17.Заполняем поля окна Аргументы функции и вычисляем значение функции в точке Хнач.

Рис. 7.5. Заполненное окно 2-го шага мастера функций

18.Протягиваем обращение к функции Y по столбцу С. Сравниваем полученные значения со значениями в столбце В.

19.Нажимаем кнопку Сохранить на панели быстрого доступа

Microsoft Excel. Открывается окно предупреждающее о необходимости изменения расширения файла для сохранения в нём макросов, обеспечивающих работоспособность функций

VBA.

Рис. 7.6. Окно предупреждающее о необходимости смены типа файла

20.В этом окне нажимаем кнопку Нет и в открывающемся окне Сохранение документа изменяем расширение .xlsx на расширение .xlsm.

21.Повторяя действия по методике п.6 - п.18 для функций G(x) и Z(x), создадим функции Gvba(x) и Zvba(x), заполним столбцы от D до F и сравним значения функций, полученные в этих столбцах.

5

Любимов Е.Б.

ЛР_7

Ниже приведены записи текстов функций, реализованных в одном модуле VBA.

Public Function G(a As Double, b As Double, x As Double) As Double If x > 0 Then G = a * Sqr(x) Else G = b * x

End Function

Public Function Z(a As Double, b As Double, x As Double) As Double If x < -0.5 Then Z = 1 + Sin(b * x) _

Else If x <= 0.5 Then Z = a * Cos(b * x) / (a + b * x) Else Z = b + ax End Function

После ввода обращения к функции Z вячейкутаблицыG6

=Z($G$4;$I$4;A6)

при нажатии на кнопку Ввод в строке формул программа автоматически переходит в среду компилятора VBA и выводит сообщение об ошибке (рис. 7.7)

Рис. 7.7.

Нажав кнопку ОК в этом окне, переходим в окно редактора VBA

(рис. 7.8).

Рис. 7.8.

Выделенные в строке инструкции символы определяют место ошибки и позволяют определить её причину. В нашем случае это отсутствие знака операции между идентификаторами а и х.

Следует также обратить внимание на то, что если бы мы не включили в текст инструкций модуля инструкции Option Explicit, сообщения об ошибке не было бы. Но при выполнении вычислений полученные результаты окажутся неверны. (Рекомендую проверить

6

Любимов Е.Б.

ЛР_7

это самостоятельно. Для того, чтобы отключить оператор Option Explicit достаточно ввести перед ним символ апостроф « ' ».).

Исправим ошибку, введя символ « * » между буквами ах. Для того, чтобы завершить работу компилятора и получить возможность продолжить отладку процедуры, необходимо нажать кнопку Reset (рис. 7.9) в строке меню программы Microsoft Visual Basic for Applications.

Рис. 7.9.

После чего можно продолжить работу в программе Microsoft Excel. Результаты выполнения после проведённого форматирования приведены на рис. 7.10.

7

Любимов Е.Б.

ЛР_7

Рис. 7.9.

8

Любимов Е.Б.

Соседние файлы в папке PDF_LABS